from datetime import date
from typing import Literal, Optional
from pydantic import validate_call, PositiveInt
from ..utils import Base, Get, parse, Formato, Output
[documentos]
class Deputado(Base):
"""Retorna os dados cadastrais de um parlamentar que, em algum momento
da história e por qualquer período, entrou em exercício na Câmara.
Parameters
----------
cod : int
Código do parlamentar.
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 de identificação.
condicao_eleitoral : str
Condição eleitoral.
cpf : str
Número do CPF.
descricao_status : str
Descrição do último status.
email : str
E-mail.
escolaridade : str
Escolaridade.
falecimento : str
Data de falecimento no formato `'AAAA-MM-DD'`.
Retorna vazio caso o parlamentar não tenha falecido.
foto : str
URL da foto.
gabinete : dict
Informações de identificação e contato do gabinete.
legislatura : int
ID da legislatura mais recente.
municipio_nascimento : str
Município de nascimento.
nascimento : str
Data de nascimento no formato `'AAAA-MM-DD'`.
nome : str
Nome mais comum.
nome_completo : str
Nome civil completo.
nome_eleitoral : str
Nome utilizado na campanha eleitoral.
partido : str
Último partido.
rede_social : list
Lista de nomes em redes sociais.
sexo : str
- 'M': Masculino;
- 'F': Feminino.
situacao : str
Situação do último status.
uf : str
Sigla da Unidade Federativa pela qual foi eleito.
uf_nascimento : str
Unidade Federativa de nascimento.
ultima_atualizacao : str
Dia e horário da última atualização de status.
uri : str
Endereço para coleta de dados direta pela API.
website : str
Website.
Methods
-------
despesas()
As despesas com exercício parlamentar do deputado.
discursos()
Os discursos feitos por um deputado em eventos diversos.
eventos()
Uma lista de eventos com a participação do parlamentar.
frentes()
As frentes parlamentares das quais um deputado é integrante.
ocupacoes()
Os empregos e atividades que o(a) deputado(a) já teve.
orgaos()
Os órgãos dos quais um deputado é integrante.
profissoes()
As frentes parlamentares das quais um deputado é integrante.
Examples
--------
Coletar partido mais recente do deputado Rodrigo Maia.
>>> cod = 74693 # Código do deputado
>>> dep = camara.Deputado(cod=cod)
>>> dep.partido
... 'DEM'
"""
def __init__(self, cod: int, verificar_certificado: bool = True):
self.cod = cod
self.verify = verificar_certificado
atributos = {
"condicao_eleitoral": ["ultimoStatus", "condicaoEleitoral"],
"cpf": ["cpf"],
"descricao_status": ["ultimoStatus", "descricaoStatus"],
"email": ["ultimoStatus", "email"],
"escolaridade": ["escolaridade"],
"falecimento": ["dataFalecimento"],
"foto": ["ultimoStatus", "urlFoto"],
"gabinete": ["ultimoStatus", "gabinete"],
"legislatura": ["ultimoStatus", "idLegislatura"],
"municipio_nascimento": ["municipioNascimento"],
"nascimento": ["dataNascimento"],
"nome": ["ultimoStatus", "nome"],
"nome_completo": ["nomeCivil"],
"nome_eleitoral": ["ultimoStatus", "nomeEleitoral"],
"partido": ["ultimoStatus", "siglaPartido"],
"rede_social": ["redeSocial"],
"sexo": ["sexo"],
"situacao": ["ultimoStatus", "situacao"],
"uf": ["ultimoStatus", "siglaUf"],
"uf_nascimento": ["ufNascimento"],
"ultima_atualizacao": ["ultimoStatus", "data"],
"uri": ["uri"],
"website": ["urlWebsite"],
}
super().__init__(
endpoint="camara",
path=["deputados", str(cod)],
unpack_keys=["dados"],
error_key="ultimoStatus",
atributos=atributos,
verify=self.verify,
)
def __repr__(self) -> str:
return f"<DadosAbertosBrasil.camara: Deputad{'a' if self.sexo == 'F' else 'o'} {self.nome_eleitoral}>"
def __str__(self) -> str:
return self.nome
[documentos]
def despesas(
self,
legislatura: Optional[PositiveInt] = None,
ano: Optional[PositiveInt] = None,
mes: Optional[PositiveInt] = None,
fornecedor: Optional[int] = None,
pagina: PositiveInt = 1,
itens: Optional[PositiveInt] = None,
asc: bool = True,
ordenar_por: str = "ano",
url: bool = True,
index: bool = False,
formato: Formato = "pandas",
) -> Output:
"""As despesas com exercício parlamentar do deputado.
Dá acesso aos registros de pagamentos e reembolsos feitos pela Câmara
em prol do deputado, a título da Cota para Exercício da Atividade
Parlamentar, a chamada "cota parlamentar".
Se não forem passados os parâmetros de tempo, o serviço retorna os
dados dos seis meses anteriores à requisição.
Parameters
----------
legislatura : int, optional
ID da legislatura em que tenham ocorrido as despesas.
ano : int, optional
Ano de ocorrência das despesas.
mes : int, optional
Número do mês de ocorrência das despesas.
fornecedor : int, optional
CNPJ de uma pessoa jurídica, ou CPF de uma pessoa física,
fornecedora do produto ou serviço (apenas números).
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='ano'
Nome do campo pelo qual a lista deverá ser ordenada:
qualquer um dos campos do retorno, e também idLegislatura.
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]
As despesas com exercício parlamentar do deputado.
"""
params = {
"pagina": pagina,
"ordem": "asc" if asc else "desc",
"ordenarPor": ordenar_por,
}
if legislatura is not None:
params["idLegislatura"] = legislatura
if ano is not None:
params["ano"] = ano
if mes is not None:
params["mes"] = mes
if fornecedor is not None:
params["cnpjCpfFornecedor"] = fornecedor
if itens is not None:
params["itens"] = itens
cols_to_rename = {
"codDocumento": "codigo",
"ano": "ano",
"mes": "mes",
"tipoDespesa": "despesa",
"tipoDocumento": "tipo",
"codTipoDocumento": "tipo_codigo",
"dataDocumento": "data",
"numDocumento": "numero",
"valorDocumento": "valor",
"urlDocumento": "url",
"nomeFornecedor": "fornecedor_nome",
"cnpjCpfFornecedor": "fornecedor_cnpj",
"valorLiquido": "valor_liquido",
"valorGlosa": "valor_glosa",
"numRessarcimento": "ressarcimento",
"codLote": "lote",
"parcela": "parcela",
}
return Get(
endpoint="camara",
path=["deputados", str(self.cod), "despesas"],
params=params,
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
cols_to_date=["data"],
url_cols=["url"],
remover_url=not url,
index=index,
verify=self.verify,
).get(formato)
[documentos]
def discursos(
self,
legislatura: Optional[PositiveInt] = None,
inicio: Optional[date] = None,
fim: Optional[date] = None,
pagina: PositiveInt = 1,
itens: Optional[PositiveInt] = None,
asc: bool = True,
ordenar_por: str = "dataHoraInicio",
url: bool = True,
formato: Formato = "pandas",
) -> Output:
"""Os discursos feitos por um deputado em eventos diversos.
Retorna uma lista de informações sobre os pronunciamentos feitos
pelo deputado que tenham sido registrados, em quaisquer eventos,
nos sistemas da Câmara.
Caso os parâmetros de tempo não sejam configurados na requisição,
são buscados os discursos ocorridos nos sete dias anteriores ao
da requisição.
Parameters
----------
legislatura : int, optional
Número da legislatura a qual os dados buscados devem corresponder.
inicio : str, optional
Data de início de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
fim : str, optional
Data de término de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
itens : int, optional
Número máximo de itens na página que se deseja obter com esta
requisição.
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.
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='dataHoraInicio'
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'.
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]
Os discursos feitos por um deputado em eventos diversos.
"""
params = {
"pagina": pagina,
"ordem": "asc" if asc else "desc",
"ordenarPor": ordenar_por,
}
if legislatura is not None:
params["idLegislatura"] = legislatura
if inicio is not None:
params["dataInicio"] = parse.data(inicio, "camara")
if fim is not None:
params["dataFim"] = parse.data(fim, "camara")
if itens is not None:
params["itens"] = itens
cols_to_rename = {
"dataHoraInicio": "data_inicio",
"dataHoraFim": "data_fim",
"uriEvento": "evento_uri",
"faseEvento": "evento_fase",
"tipoDiscurso": "tipo",
"urlTexto": "texto_uri",
"urlAudio": "audio_url",
"urlVideo": "video_url",
"keywords": "keywords",
"sumario": "sumario",
"transcricao": "transcricao",
}
return Get(
endpoint="camara",
path=["deputados", str(self.cod), "discursos"],
params=params,
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
cols_to_date=["data_inicio", "data_fim"],
url_cols=["evento_uri", "texto_uri", "audio_url", "video_url"],
remover_url=not url,
verify=self.verify,
).get(formato)
[documentos]
def eventos(
self,
legislatura: Optional[PositiveInt] = None,
inicio: Optional[date] = None,
fim: Optional[date] = None,
pagina: PositiveInt = 1,
itens: Optional[PositiveInt] = None,
asc: bool = True,
ordenar_por: str = "dataHoraInicio",
url: bool = True,
index: bool = False,
formato: Formato = "pandas",
) -> Output:
"""Uma lista de eventos com a participação do parlamentar.
Retorna uma lista de objetos evento nos quais a participação do
parlamentar era ou é prevista.
Se não forem passados parâmetros de tempo, são retornados os eventos
num período de cinco dias, sendo dois antes e dois depois do dia da
requisição.
Parameters
----------
legislatura : int, optional
Número da legislatura a qual os dados buscados devem corresponder.
inicio : str, optional
Data de início de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
fim : str, optional
Data de término de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
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='dataHoraInicio'
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.
Returns
-------
pandas.core.frame.DataFrame | str | dict | list[dict]
Uma lista de eventos com a participação do parlamentar.
"""
params = {
"pagina": pagina,
"ordem": "asc" if asc else "desc",
"ordenarPor": ordenar_por,
}
if legislatura is not None:
params["idLegislatura"] = legislatura
if inicio is not None:
params["dataInicio"] = parse.data(inicio, "camara")
if fim is not None:
params["dataFim"] = parse.data(fim, "camara")
if itens is not None:
params["itens"] = itens
cols_to_rename = {
"id": "codigo",
"uri": "uri",
"dataHoraInicio": "data_inicio",
"dataHoraFim": "data_fim",
"situacao": "situacao",
"descricaoTipo": "descricao_tipo",
"descricao": "descricao",
"localExterno": "local_externo",
"orgaos": "orgaos",
"localCamara.nome": "local",
"localCamara.predio": "local_predio",
"localCamara.sala": "local_sala",
"localCamara.andar": "local_andar",
"urlRegistro": "url",
}
data = Get(
endpoint="camara",
path=["deputados", str(self.cod), "eventos"],
params=params,
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
cols_to_date=["data_inicio", "data_fim"],
url_cols=["uri", "url"],
remover_url=not url,
index=index,
verify=self.verify,
).get(formato)
if formato == "pandas":
def get_orgaos(orgaos):
cod = [orgao["id"] for orgao in orgaos]
if len(cod) < 2:
return cod[0]
return cod
data["orgaos"] = data["orgaos"].apply(get_orgaos)
return data
[documentos]
def frentes(
self,
url: bool = True,
index: bool = False,
formato: Formato = "pandas",
) -> Output:
"""As frentes parlamentares das quais um deputado é integrante.
Retorna uma lista de informações básicas sobre as frentes
parlamentares das quais o parlamentar seja membro, ou, no caso de
frentes existentes em legislaturas anteriores, tenha encerrado a
legislatura como integrante.
Parameters
----------
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]
As frentes parlamentares das quais um deputado é integrante.
"""
cols_to_rename = {
"id": "codigo",
"uri": "uri",
"titulo": "titulo",
"idLegislatura": "legislatura",
}
return Get(
endpoint="camara",
path=["deputados", str(self.cod), "frentes"],
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
url_cols=["uri"],
remover_url=not url,
index=index,
verify=self.verify,
).get(formato)
[documentos]
def ocupacoes(
self,
formato: Formato = "pandas",
) -> Output:
"""Os empregos e atividades que o(a) deputado(a) já teve.
Enumera as atividades profissionais ou ocupacionais que o deputado
já teve em sua carreira e declarou à Câmara dos Deputados.
Parameters
----------
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]
Os empregos e atividades que o(a) deputado(a) já teve.
"""
cols_to_rename = {
"anoInicio": "ano_inicio",
"anoFim": "ano_fim",
"entidade": "entidade",
"entidadePais": "pais",
"entidadeUF": "uf",
"titulo": "titulo",
}
return Get(
endpoint="camara",
path=["deputados", str(self.cod), "ocupacoes"],
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
verify=self.verify,
).get(formato)
[documentos]
def orgaos(
self,
inicio: Optional[date] = None,
fim: Optional[date] = None,
pagina: PositiveInt = 1,
itens: Optional[PositiveInt] = None,
asc: bool = True,
ordenar_por: str = "dataInicio",
url: bool = True,
index: bool = False,
formato: Formato = "pandas",
) -> Output:
"""Os órgãos dos quais um deputado é integrante.
Retorna uma lista de órgãos, como as comissões e procuradorias,
dos quais o deputado participa ou participou durante um intervalo
de tempo.
Cada item identifica um órgão, o cargo ocupado pelo parlamentar neste
órgão (como presidente, vice-presidente, titular ou suplente) e as
datas de início e fim da ocupação deste cargo.
Se não for passado algum parâmetro de tempo, são retornados os órgãos
ocupados pelo parlamentar no momento da requisição. Neste caso a
lista será vazia se o deputado não estiver em exercício.
Parameters
----------
inicio : str, optional
Data de início de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
fim : str, optional
Data de término de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
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='dataInicio'
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.
Returns
-------
pandas.core.frame.DataFrame | str | dict | list[dict]
Os órgãos dos quais um deputado é integrante.
"""
params = {
"pagina": pagina,
"ordem": "asc" if asc else "desc",
"ordenarPor": ordenar_por,
}
if inicio is not None:
params["dataInicio"] = parse.data(inicio, "camara")
if fim is not None:
params["dataFim"] = parse.data(fim, "camara")
if itens is not None:
params["itens"] = itens
cols_to_rename = {
"idOrgao": "codigo",
"uriOrgao": "uri",
"siglaOrgao": "sigla",
"nomeOrgao": "nome",
"nomePublicacao": "publicacao",
"titulo": "titulo",
"codTitulo": "titulo_codigo",
"dataInicio": "data_inicio",
"dataFim": "data_fim",
}
return Get(
endpoint="camara",
path=["deputados", str(self.cod), "orgaos"],
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"],
remover_url=not url,
index=index,
verify=self.verify,
).get(formato)
[documentos]
def profissoes(
self,
url: bool = True,
index: bool = False,
formato: Formato = "pandas",
) -> Output:
"""As frentes parlamentares das quais um deputado é integrante.
Retorna uma lista de dados sobre profissões que o parlamentar declarou
à Câmara que já exerceu ou que pode exercer pela sua formação e/ou
experiência.
Parameters
----------
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]
As frentes parlamentares das quais um deputado é integrante.
"""
cols_to_rename = {
"id": "codigo",
"idLegislatura": "legislatura",
"titulo": "titulo",
"uri": "uri",
"dataHora": "data",
"codTipoProfissao": "tipo",
}
return Get(
endpoint="camara",
path=["deputados", str(self.cod), "profissoes"],
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
cols_to_date=["data"],
url_cols=["uri"],
remover_url=not url,
index=index,
verify=self.verify,
).get(formato)
[documentos]
@validate_call
def lista_deputados(
nome: Optional[str] = None,
legislatura: Optional[PositiveInt] = None,
uf: Optional[str] = None,
partido: Optional[str] = None,
sexo: Optional[Literal["f", "m"]] = None,
inicio: Optional[date] = None,
fim: Optional[date] = 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:
"""Listagem e busca de deputados, segundo critérios.
Retorna uma lista de dados básicos sobre deputados que estiveram em
exercício parlamentar em algum intervalo de tempo. Se não for passado um
parâmetro de tempo, como `legislatura` ou `inicio`, a lista enumerará
somente os deputados em exercício no momento da requisição.
Parameters
----------
nome : str, optional
Parte do nome dos parlamentares.
legislatura : int, optional
Número da legislatura a qual os dados buscados devem corresponder.
uf : str, optional
Sigla da unidade federativa (estados e Distrito Federal).
Se None, serão retornados deputados de todos os estados.
partido : str, optional
Sigla do partido ao qual sejam filiados os deputados.
Para obter as siglas válidas, consulte a função `camara.lista_partidos`.
Atenção: partidos diferentes podem usar a mesma sigla em diferentes
legislaturas.
sexo : {'f', 'm'}, optional
Letra que designe o gênero dos parlamentares que se deseja buscar,
- 'f': Feminino;
- 'm': Masculino.
inicio : str, optional
Data de início de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
fim : str, optional
Data de término de um intervalo de tempo, no formato `'AAAA-MM-DD'`.
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 deputados.
"""
params = {
"pagina": pagina,
"ordem": "asc" if asc else "desc",
"ordenarPor": ordenar_por,
}
if nome is not None:
params["nome"] = nome
if legislatura is not None:
params["idLegislatura"] = legislatura
if uf is not None:
params["siglaUf"] = parse.uf(uf)
if partido is not None:
params["siglaPartido"] = partido
if sexo is not None:
params["siglaSexo"] = sexo.upper()
if inicio is not None:
params["dataInicio"] = parse.data(inicio, "camara")
if fim is not None:
params["dataFim"] = parse.data(fim, "camara")
if itens is not None:
params["itens"] = itens
cols_to_rename = {
"id": "codigo",
"uri": "uri",
"nome": "nome",
"siglaPartido": "partido",
"uriPartido": "partido_uri",
"siglaUf": "uf",
"idLegislatura": "legislatura",
"urlFoto": "foto",
"email": "email",
}
return Get(
endpoint="camara",
path=["deputados"],
params=params,
unpack_keys=["dados"],
cols_to_rename=cols_to_rename,
cols_to_int=["codigo", "legislatura"],
url_cols=["uri", "partido_uri", "foto", "email"],
remover_url=not url,
index=index,
verify=verificar_certificado,
).get(formato)