def parse_documento_index_palavras(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/palavras_chave.xml"
        r = requests.get(url)
        obj = untangle.parse(r.text)
        obj = obj.palavras_chave.PalavraChave

        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = ["IdPalavra", "Palavra", "PalavraSemAcento"]
        l = len(obj)

        for i in range(l):
            line = []

            a = obj[i].IdPalavra.cdata

            try:
                b = obj[i].Palavra.cdata
            except:
                b = np.nan

            try:
                c = obj[i].PalavraSemAcento.cdata
            except:
                c = np.nan

            line = [a, b, c]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/index_palavras_chave.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/index_palavras_chave.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
    df = pd.read_csv("../data/tramitacoes/index_palavras_chave.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "idpalavra": "id_palavra",
        "palavrasemacento": "palavra_sem_acento",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/index_palavras_chave.csv",
        index=False,
        encoding="utf-8",
    )
Beispiel #2
0
def parse_despesas(download=True):
    if download:
        url = (
            "http://www.al.sp.gov.br/repositorioDados/deputados/despesas_gabinetes.xml"
        )
        r = requests.get(url)
        print("xml downloaded")
        obj = untangle.parse(r.text)
        obj = obj.despesas.despesa
        print("number of rows = ", len(obj))

        cols = [
            "Ano",
            "Matricula",
            "Mes",
            "Valor",
            "CNPJ",
            "Deputado",
            "Tipo",
            "Fornecedor",
        ]

        l = len(obj)

        for i in range(l):
            line = []

            #     print(i)

            a = obj[i].Ano.cdata
            b = obj[i].Matricula.cdata
            c = obj[i].Mes.cdata
            d = obj[i].Valor.cdata
            try:
                e = obj[i].CNPJ.cdata
            except:
                e = np.nan

            f = obj[i].Deputado.cdata
            g = obj[i].Tipo.cdata
            h = obj[i].Fornecedor.cdata

            line = [a, b, c, d, e, f, g, h]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/gastos/despesas_gabinetes_aux.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/gastos/despesas_gabinetes_aux.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )

    despesas = pd.read_csv("../data/gastos/despesas_gabinetes_aux.csv")
    deputados = pd.read_csv("../data/servidores/deputados_alesp.csv")

    ############### DESPESAS SINCE 2002
    despesas_all = despesas.copy()
    despesas_all["Data"] = pd.to_datetime(despesas["Ano"].astype(str) + "-" +
                                          despesas["Mes"].astype(str))
    despesas_all = despesas_all.sort_values(by="Data")
    cols = [
        "Ano",
        "Mes",
        "Data",
        "Matricula",
        "Deputado",
        "CNPJ",
        "Fornecedor",
        "Tipo",
        "Valor",
    ]
    despesas_all = despesas_all[cols]
    despesas_all["CNPJ"] = despesas_all["CNPJ"].astype(str).str.replace(
        ".0", "")
    despesas_all.columns = manipulation.normalize_cols(despesas_all.columns)
    despesas_all = despesas_all.drop(["data"], 1)
    rename_cols = {
        "partido": "sigla_partido",
        "deputado": "nome_deputado",
        "cnpj": "cpf_cnpj",
    }
    despesas_all = despesas_all.rename(columns=rename_cols)
    despesas_all.to_csv("../data/gastos/despesas_since_2002.csv", index=False)
    # despesas_all.to_csv(f"{mais_path}/raw/gastos/despesas_since_2002.csv", index=False)

    for ano in despesas_all["ano"].unique():
        partitioned_path = "../data/gastos/despesas_gabinete/"
        mask = despesas_all["ano"] == ano
        dd = despesas_all[mask]

        partitioned_path += f"ano={ano}/"
        if os.path.isdir(partitioned_path) == False:
            os.makedirs(partitioned_path)

        dd = dd.drop("ano", 1)
        dd.to_csv(partitioned_path + "gastos_gabinete.csv",
                  index=False,
                  encoding="utf-8")

    print("Despesas ALL done!")

    ### inicio mandato
    despesas["CNPJ"] = despesas["CNPJ"].astype(str).str.replace(".0", "")
    despesas["Data"] = pd.to_datetime(despesas["Ano"].astype(str) + "-" +
                                      despesas["Mes"].astype(str))

    mask = despesas["Data"] >= "2019-03-01"
    despesas = despesas[mask].sort_values(by="Data")

    deputados_list = deputados["matricula"].unique().tolist()

    df_ano_mes = pd.DataFrame()

    for i in range(2019, 2023):
        for j in range(1, 13):
            df_aux = pd.DataFrame(deputados_list, columns=["Matricula"])
            df_aux["Ano"] = i
            df_aux["Mes"] = j
            #         df_aux['cota']=33000
            df_ano_mes = pd.concat([df_ano_mes, df_aux], axis=0)

    max_year = max(despesas["Ano"])
    max_month = max(despesas["Mes"])

    mask = (df_ano_mes["Ano"] <= max_year) & (df_ano_mes["Mes"] <= max_month)

    df_ano_mes = df_ano_mes[mask]

    df_ano_mes

    df_ano_mes["Data"] = pd.to_datetime(df_ano_mes["Ano"].astype(str) + "-" +
                                        df_ano_mes["Mes"].astype(str))

    ### inicio mandato
    mask = mask = df_ano_mes["Data"] >= "2019-03-01"
    df_ano_mes = df_ano_mes[mask]

    df_ano_mes = df_ano_mes.drop(columns=["Data"])
    despesas_final = pd.merge(despesas,
                              df_ano_mes,
                              how="outer",
                              on=[
                                  "Matricula", "Ano", "Mes"
                              ]).sort_values(by=["Matricula", "Ano", "Mes"])

    despesas_final["Data"] = (despesas_final["Ano"].astype(str) + "-" +
                              despesas_final["Mes"].astype(str))

    despesas_final["Data"] = pd.to_datetime(despesas_final["Data"])

    despesas_final = despesas_final.drop(["Data"], 1)
    despesas_final = despesas_final.rename(
        columns={"Deputado": "nome_deputado"})
    despesas_final.columns = manipulation.normalize_cols(
        despesas_final.columns)
    despesas_final = pd.merge(
        despesas_final.drop(["nome_deputado"], 1),
        deputados[["matricula", "nome_deputado"]],
        on="matricula",
    )
    rename_cols = {
        "partido": "sigla_partido",
        "cnpj": "cpf_cnpj",
    }
    despesas_final = despesas_final.rename(columns=rename_cols)

    despesas_final = despesas_final[despesas_all.columns]
    despesas_final.to_csv("../data/gastos/despesas_gabinetes_mandato.csv",
                          index=False,
                          encoding="utf-8")

    print("Despesas Mandato done!")

    return despesas_all, despesas_final
Beispiel #3
0
def parse_servidores():
    url = "https://www.al.sp.gov.br/servidor/lista/?todos=true"
    html = requests.get(url).content
    df_list = pd.read_html(html)
    df = df_list[-1]

    old_cols = df.columns.tolist()
    for col in df.columns:
        df[col[1]] = df[col]

    df = df.drop(columns=old_cols)

    df.to_csv("../data/servidores/servidores_locacao_cargo.csv",
              index=False,
              encoding="utf-8")

    servidores = pd.read_csv("../data/servidores/servidores_locacao_cargo.csv")
    servidores = servidores[servidores["SERVIDOR"].notnull()]
    servidores["REGIME"] = (
        servidores["CARGO"].str.split(" - ").apply(lambda x: x[1]).str.strip())
    servidores["CARGO"] = (
        servidores["CARGO"].str.split(" - ").apply(lambda x: x[0]).str.strip())
    servidores.columns = manipulation.normalize(servidores.columns)
    mask = servidores["LOTACAO"].str.contains("GABINETE DEP.")

    rename_cols = {
        "Deputado": "nome_deputado",
    }
    servidores = servidores.rename(columns=rename_cols)

    servidores["nome_deputado"] = np.where(
        mask, servidores["LOTACAO"].str.replace("GABINETE DEP.", ""), np.nan)
    for col in servidores.columns:
        servidores[col] = manipulation.normalize(servidores[col])

    demais_servidores = servidores[servidores["nome_deputado"].isnull()]

    servidores = servidores[servidores["nome_deputado"].notnull()]

    servidores.columns = manipulation.normalize_cols(servidores.columns)

    ### Merge servidores e partidos
    deputados = pd.read_csv("../data/servidores/deputados_alesp.csv")

    servidores = deputados[["nome_deputado",
                            "sigla_partido"]].merge(servidores,
                                                    how="outer",
                                                    on="nome_deputado")

    servidores.to_csv("../data/servidores/assessores_parlamentares.csv",
                      index=False,
                      encoding="utf-8")
    # servidores.to_csv(
    #     f"{mais_path}/raw/servidores/assessores_parlamentares.csv",
    #     index=False,
    #     encoding="utf-8",
    # )

    ### Demais Servidores
    mask = demais_servidores["LOTACAO"].str.contains("LIDERANCA DO")
    mask2 = demais_servidores["LOTACAO"].str.contains("LIDERANCA DA")

    demais_servidores["Partido"] = np.where(
        mask, demais_servidores["LOTACAO"].str.replace("LIDERANCA DO ", ""),
        np.nan)
    demais_servidores["Partido"] = np.where(
        mask2,
        demais_servidores["LOTACAO"].str.replace("LIDERANCA DA ", ""),
        demais_servidores["Partido"],
    )

    mask = demais_servidores["Partido"].notnull()

    liderancas = demais_servidores[mask]

    rename = {
        "PARTIDO SOCIAL DEMOCRATICO": "PSD",
        "PARTIDO NOVO ": "NOVO",
        "REDE SUSTENTABILIDADE": "REDE",
        "SOLIDARIEDADE": "SD",
        "PC DO B": "PC do B",
    }

    liderancas["Partido"] = (liderancas["Partido"].replace(rename).str.replace(
        "PARTIDO ", ""))
    # liderancas.columns = liderancas.columns.str.title()
    liderancas = liderancas.drop(["nome_deputado"], 1)
    liderancas.columns = manipulation.normalize_cols(liderancas.columns)
    rename_cols = {
        "partido": "sigla_partido",
    }
    liderancas = liderancas.rename(columns=rename_cols)

    all_cols = liderancas.columns.tolist()
    all_cols.remove("sigla_partido")
    lideranca_order = ["sigla_partido"] + all_cols
    liderancas = liderancas[lideranca_order]

    liderancas.to_csv("../data/servidores/assessores_lideranca.csv",
                      index=False,
                      encoding="utf-8")
    # liderancas.to_csv(
    #     f"{mais_path}/raw/servidores/assessores_lideranca.csv",
    #     index=False,
    #     encoding="utf-8",
    # )

    os.remove("../data/servidores/servidores_locacao_cargo.csv")
    return servidores, liderancas
def parse_comissoes_permanentes_reunioes(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/comissoes_permanentes_reunioes.xml"
        r = requests.get(url)

        obj = untangle.parse(r.text)
        obj = obj.ComissoesReunioes.ReuniaoComissao
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = [
            "Situacao",
            "Data",
            "IdComissao",
            "IdPauta",
            "IdReuniao",
            "Presidente",
            "NrConvocacao",
            "NrLegislatura",
            "TipoConvocacao",
            "CodSituacao",
        ]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].Situacao.cdata
            except:
                a = np.nan

            try:
                b = obj[i].Data.cdata
            except:
                b = np.nan

            try:
                c = obj[i].IdComissao.cdata
            except:
                c = np.nan

            try:
                d = obj[i].IdPauta.cdata
            except:
                d = np.nan

            try:
                e = obj[i].IdReuniao.cdata
            except:
                e = np.nan

            try:
                f = obj[i].Presidente.cdata
            except:
                f = np.nan

            try:
                g = obj[i].NrConvocacao.cdata
            except:
                g = np.nan

            try:
                h = obj[i].NrLegislatura.cdata
            except:
                h = np.nan

            try:
                z = obj[i].TipoConvocacao.cdata
            except:
                z = np.nan

            try:
                j = obj[i].CodSituacao.cdata
            except:
                j = np.nan

            line = [a, b, c, d, e, f, g, h, z, j]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/comissoes_permanentes_reunioes.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/comissoes_permanentes_reunioes.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )

    df = pd.read_csv("../data/tramitacoes/comissoes_permanentes_reunioes.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "idcomissao": "id_comissao",
        "idpauta": "id_pauta",
        "nrconvocacao": "numero_convocacao",
        "nrlegislatura": "numero_legislatura",
        "tipoconvocacao": "tipo_convocacao",
        "codsituacao": "codigo_situacao",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/comissoes_permanentes_reunioes.csv",
        index=False,
        encoding="utf-8",
    )
def parse_documento_regime(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/documento_regime.zip"
        path_to_save = "../data/tramitacoes/"
        file_name = download_unzip(url, path_to_save)
        print("path_to_save = ", path_to_save)
        print("file_name = ", file_name)

        obj = untangle.parse("{}{}.xml".format(path_to_save, file_name))
        obj = obj.documentos_regimes.DocumentoRegime
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = ["DataFim", "DataInicio", "IdDocumento", "IdRegime", "NomeRegime"]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].DataFim.cdata
            except:
                a = np.nan

            try:
                b = obj[i].DataInicio.cdata
            except:
                b = np.nan

            try:
                c = obj[i].IdDocumento.cdata
            except:
                c = np.nan

            try:
                d = obj[i].IdRegime.cdata
            except:
                d = np.nan

            try:
                e = obj[i].NomeRegime.cdata
            except:
                e = np.nan

            line = [a, b, c, d, e]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/documento_regime.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/documento_regime.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
        os.remove(f"{path_to_save}{file_name}.xml")

    df = pd.read_csv("../data/tramitacoes/documento_regime.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "datafim": "data_fim",
        "datainicio": "data_inicio",
        "iddocumento": "id_documento",
        "idregime": "id_regime",
        "nomeregime": "nome_regime",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/documento_regime.csv",
        index=False,
        encoding="utf-8",
    )
def parse_proposituras(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/proposituras.zip"
        path_to_save = "../data/tramitacoes/"
        file_name = download_unzip(url, path_to_save)
        print("path_to_save = ", path_to_save)
        print("file_name = ", file_name)

        obj = untangle.parse("{}{}.xml".format(path_to_save, file_name))
        obj = obj.proposituras.propositura
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = [
            "AnoLegislativo",
            "CodOriginalidade",
            "Ementa",
            "DtEntradaSistema",
            "DtPublicacao",
            "IdDocumento",
            "IdNatureza",
            "NroLegislativo",
        ]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].AnoLegislativo.cdata
            except:
                a = np.nan

            try:
                b = obj[i].CodOriginalidade.cdata
            except:
                b = np.nan
            c = obj[i].Ementa.cdata

            try:
                d = obj[i].DtEntradaSistema.cdata
            except:
                d = np.nan

            e = obj[i].DtPublicacao.cdata
            f = obj[i].IdDocumento.cdata
            g = obj[i].IdNatureza.cdata
            h = obj[i].NroLegislativo.cdata

            line = [a, b, c, d, e, f, g, h]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/proposituras.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/proposituras.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
        os.remove(f"{path_to_save}{file_name}.xml")

    df = pd.read_csv("../data/tramitacoes/proposituras.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "anolegislativo": "ano_legislativo",
        "codoriginalidade": "codigo_originalidade",
        "dtentradasistema": "data_entrada_sistema",
        "dtpublicacao": "data_publicacao",
        "iddocumento": "id_documento",
        "idnatureza": "id_natureza",
        "nrolegislativo": "numero_legislativo",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/proposituras.csv",
        index=False,
        encoding="utf-8",
    )
def parse_comissoes_permanentes_presencas(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/comissoes_permanentes_presencas.xml"
        r = requests.get(url)

        obj = untangle.parse(r.text)
        obj = obj.ComissoesReunioesPresencas.ReuniaoComissaoPresenca
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = [
            "DataReuniao",
            "IdComissao",
            "IdDeputado",
            "IdPauta",
            "IdReuniao",
            "Deputado",
            "SiglaComissao",
        ]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].DataReuniao.cdata
            except:
                a = np.nan

            try:
                b = obj[i].IdComissao.cdata
            except:
                b = np.nan
            try:
                c = obj[i].IdDeputado.cdata
            except:
                c = np.nan

            try:
                d = obj[i].IdPauta.cdata
            except:
                d = np.nan

            try:
                e = obj[i].IdReuniao.cdata
            except:
                e = np.nan

            try:
                f = obj[i].Deputado.cdata
            except:
                f = np.nan

            try:
                g = obj[i].SiglaComissao.cdata
            except:
                g = np.nan

            line = [a, b, c, d, e, f, g]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/comissoes_permanentes_presencas.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/comissoes_permanentes_presencas.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
    df = pd.read_csv("../data/tramitacoes/comissoes_permanentes_presencas.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "datareuniao": "data_reuniao",
        "idcomissao": "id_comissao",
        "iddeputado": "id_deputado",
        "idpauta": "id_pauta",
        "idreuniao": "id_reuniao",
        "siglacomissao": "sigla_comissao",
        "deputado": "nome_deputado",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/comissoes_permanentes_presencas.csv",
        index=False,
        encoding="utf-8",
    )

    return df
def parse_propositura_parecer(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/propositura_parecer.zip"
        path_to_save = "../data/tramitacoes/"
        file_name = download_unzip(url, path_to_save)
        print("path_to_save = ", path_to_save)
        print("file_name = ", file_name)

        obj = untangle.parse("{}{}.xml".format(path_to_save, file_name))
        obj = obj.pareceres.ProposituraParecerComissao
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = [
            "AnoParecer",
            "Descricao",
            "Data",
            "AdReferendum",
            "RelatorEspecial",
            "VotoVencido",
            "IdComissao",
            "IdDocumento",
            "IdParecer",
            "IdTipoParecer",
            "TipoParecer",
            "NrParecer",
            "SiglaComissao",
            "TpParecer",
            "URL",
        ]
        l = len(obj)
        i = 0
        for i in range(l):

            line = []

            try:
                a = obj[i].AnoParecer.cdata
            except:
                a = np.nan

            try:
                b = obj[i].Descricao.cdata
            except:
                b = np.nan
            try:
                c = obj[i].Data.cdata
            except:
                c = np.nan

            try:
                d = obj[i].AdReferendum.cdata
            except:
                d = np.nan

            try:
                e = obj[i].RelatorEspecial.cdata
            except:
                e = np.nan

            try:
                f = obj[i].VotoVencido.cdata
            except:
                f = np.nan

            try:
                g = obj[i].IdComissao.cdata
            except:
                g = np.nan

            try:
                h = obj[i].IdDocumento.cdata
            except:
                h = np.nan

            try:
                z = obj[i].IdParecer.cdata
            except:
                z = np.nan

            try:
                j = obj[i].IdTipoParecer.cdata
            except:
                j = np.nan

            try:
                k = obj[i].TipoParecer.cdata
            except:
                k = np.nan

            try:
                l = obj[i].NrParecer.cdata
            except:
                l = np.nan

            try:
                m = obj[i].SiglaComissao.cdata
            except:
                m = np.nan

            try:
                n = obj[i].TpParecer.cdata
            except:
                n = np.nan

            try:
                o = obj[i].URL.cdata
            except:
                o = np.nan

            line = [a, b, c, d, e, f, g, h, z, j, k, l, m, n, o]

            df = pd.DataFrame([line], columns=cols)

            #     print(i)
            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/propositura_parecer.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/propositura_parecer.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
        os.remove(f"{path_to_save}{file_name}.xml")

    df = pd.read_csv("../data/tramitacoes/propositura_parecer.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "anoparecer": "ano_parecer",
        "adreferendum": "ad_referendum",
        "relatorespecial": "relator_especial",
        "votovencido": "voto_vencido",
        "idcomissao": "id_comissao",
        "iddocumento": "id_documento",
        "idparecer": "id_parecer",
        "idtipoparecer": "id_tipo_parecer",
        "tipoparecer": "tipo_parecer",
        "nrparecer": "numero_parecer",
        "siglacomissao": "sigla_comissao",
        "tpparecer": "tipo_parecer",
        "url": "url",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/propositura_parecer.csv",
        index=False,
        encoding="utf-8",
    )
def parse_documento_palavras(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/documento_palavras.zip"
        path_to_save = "../data/tramitacoes/"
        file_name = download_unzip(url, path_to_save)
        print("path_to_save = ", path_to_save)

        print("file_name = ", file_name)

        obj = untangle.parse("{}{}.xml".format(path_to_save, file_name))
        obj = obj.documentos_palavras.DocumentoPalavra

        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = ["IdDocumento", "IdPalavra"]
        l = len(obj)

        for i in range(l):
            line = []

            a = obj[i].IdDocumento.cdata

            try:
                b = obj[i].IdPalavra.cdata
            except:
                b = np.nan

            line = [a, b]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/documento_palavras.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/documento_palavras.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
        os.remove(f"{path_to_save}{file_name}.xml")
    df = pd.read_csv("../data/tramitacoes/documento_palavras.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "iddocumento": "id_documento",
        "idpalavra": "id_palavra",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/documento_palavras.csv",
        index=False,
        encoding="utf-8",
    )
def parse_naturezasSpl(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/naturezasSpl.xml"
        r = requests.get(url)
        obj = untangle.parse(r.text)
        obj = obj.natureza.natureza
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = ["idNatureza", "nmNatureza", "sgNatureza", "tpNatureza"]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].idNatureza.cdata
            except:
                a = np.nan

            try:
                b = obj[i].nmNatureza.cdata
            except:
                b = np.nan
            try:
                c = obj[i].sgNatureza.cdata
            except:
                c = np.nan

            try:
                d = obj[i].tpNatureza.cdata
            except:
                d = np.nan

            line = [a, b, c, d]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/naturezasSpl.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/naturezasSpl.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
    df = pd.read_csv("../data/tramitacoes/naturezasSpl.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "idnatureza": "id_natureza",
        "nmnatureza": "nome_natureza",
        "sgnatureza": "sigla_natureza",
        "tpnatureza": "tipo_natureza",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/naturezasSpl.csv",
        index=False,
        encoding="utf-8",
    )
def parse_comissoes_membros(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/comissoes_membros.xml"
        r = requests.get(url)
        obj = untangle.parse(r.text)
        obj = obj.ComissoesMembros.MembroComissao
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = [
            "DataInicio",
            "Efetivo",
            "IdComissao",
            "IdMembro",
            "IdPapel",
            "NomeMembro",
            "Papel",
            "SiglaComissao",
        ]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].DataInicio.cdata
            except:
                a = np.nan

            try:
                b = obj[i].Efetivo.cdata
            except:
                b = np.nan

            try:
                c = obj[i].IdComissao.cdata
            except:
                c = np.nan

            try:
                d = obj[i].IdMembro.cdata
            except:
                d = np.nan

            try:
                e = obj[i].IdPapel.cdata
            except:
                e = np.nan

            try:
                f = obj[i].NomeMembro.cdata
            except:
                f = np.nan

            try:
                g = obj[i].Papel.cdata
            except:
                g = np.nan

            try:
                h = obj[i].SiglaComissao.cdata
            except:
                h = np.nan

            line = [a, b, c, d, e, f, g, h]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/comissoes_membros.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/comissoes_membros.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
    df = pd.read_csv("../data/tramitacoes/comissoes_membros.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "datainicio": "data_inicio",
        "idcomissao": "id_comissao",
        "idmembro": "id_membro",
        "idpapel": "id_papel",
        "nomemembro": "nome_membro",
        "siglacomissao": "sigla_comissao",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/comissoes_membros.csv",
        index=False,
        encoding="utf-8",
    )
def parse_deliberacoes_comissoes(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/comissoes_permanentes_deliberacoes.xml"
        r = requests.get(url)
        obj = untangle.parse(r.text)
        obj = obj.ComissoesReunioesDeliberacoes.ReuniaoComissaoDeliberacao

        print("rows: ", len(obj))
        print("Sample:", obj[0])
        cols = [
            "Deliberacao",
            "DataInclusao",
            "DataSaida",
            "IdDeliberacao",
            "IdDocumento",
            "IdPauta",
            "IdReuniao",
            "NrOrdem",
        ]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].Deliberacao.cdata
            except:
                a = np.nan

            try:
                b = obj[i].DataInclusao.cdata
            except:
                b = np.nan

            try:
                c = obj[i].DataSaida.cdata
            except:
                c = np.nan

            try:
                d = obj[i].IdDeliberacao.cdata
            except:
                d = np.nan

            try:
                e = obj[i].IdDocumento.cdata
            except:
                e = np.nan

            try:
                f = obj[i].IdPauta.cdata
            except:
                f = np.nan

            try:
                g = obj[i].IdReuniao.cdata
            except:
                g = np.nan

            try:
                h = obj[i].NrOrdem.cdata
            except:
                h = np.nan

            line = [a, b, c, d, e, f, g, h]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/comissoes_permanentes_deliberacoes.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/comissoes_permanentes_deliberacoes.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
    df = pd.read_csv("../data/tramitacoes/comissoes_permanentes_deliberacoes.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "datainclusao": "data_inclusao",
        "datasaida": "data_saida",
        "iddeliberacao": "id_deliberacao",
        "iddocumento": "id_documento",
        "idpauta": "id_pauta",
        "idreuniao": "id_reuniao",
        "nrordem": "nuumero_ordem",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/comissoes_permanentes_deliberacoes.csv",
        index=False,
        encoding="utf-8",
    )
def parse_documento_andamento_atual(download=True):
    if download:
        url = "http://www.al.sp.gov.br/repositorioDados/processo_legislativo/documento_andamento_atual.zip"
        path_to_save = "../data/tramitacoes/"
        file_name = download_unzip(url, path_to_save)
        print("path_to_save = ", path_to_save)
        print("file_name = ", file_name)

        obj = untangle.parse("{}{}.xml".format(path_to_save, file_name))
        obj = obj.documentos_andamentos.DocumentoAndamento
        print("rows: ", len(obj))
        print("Sample:", obj[0])

        cols = [
            "Descricao",
            "Data",
            "IdComissao",
            "IdDocumento",
            "IdEtapa",
            "IdTpAndamento",
            "NmEtapa",
            "NrOrdem",
            "TpAndamento",
        ]
        l = len(obj)

        for i in range(l):
            line = []

            try:
                a = obj[i].Descricao.cdata
            except:
                a = np.nan
            b = obj[i].Data.cdata
            c = obj[i].IdComissao.cdata
            d = obj[i].IdDocumento.cdata
            e = obj[i].IdEtapa.cdata
            f = obj[i].IdTpAndamento.cdata
            g = obj[i].NmEtapa.cdata
            h = obj[i].NrOrdem.cdata
            z = obj[i].TpAndamento.cdata

            line = [a, b, c, d, e, f, g, h, z]

            df = pd.DataFrame([line], columns=cols)

            if i == 0:
                df.to_csv(
                    "../data/tramitacoes/documento_andamento_atual.csv",
                    index=False,
                    encoding="utf-8",
                )

            else:
                df.to_csv(
                    "../data/tramitacoes/documento_andamento_atual.csv",
                    index=False,
                    encoding="utf-8",
                    header=False,
                    mode="a",
                )
        os.remove(f"{path_to_save}{file_name}.xml")

    df = pd.read_csv("../data/tramitacoes/documento_andamento_atual.csv")
    df.columns = manipulation.normalize_cols(df.columns)
    rename_cols = {
        "idcomissao": "id_comissao",
        "iddocumento": "id_documento",
        "idetapa": "id_etapa",
        "idtpandamento": "id_tipo_andamento",
        "nmetapa": "nome_etapa",
        "nrordem": "numero_ordem",
        "tpandamento": "tipo_andamento",
    }
    df = df.rename(columns=rename_cols)

    df.to_csv(
        "../data/tramitacoes/documento_andamento_atual.csv",
        index=False,
        encoding="utf-8",
    )