Nove de Julho

Nove de Julho é um projeto open-source com foco na Assembleia Legislativa do Estado de São Paulo.

Seu objetivo é raspar, formatar e agregar conjuntos de dados referentes à Alesp e aos parlamentares, como gastos via verba de gabinete, proposições apresentadas, presenças em sessões, lista de funcionários, salários, bens declarados durante campanhas eleitorais, entre outros.

O desenvolvimento do Nove de Julho começou em 6 de janeiro de 2019. Desde então o projeto cresceu, tanto no número de datasets agregados —hoje são mais de 30— quanto na quantidade de colaboradores —como @cuducos, @jtemporal, @Vnicius e @hducati.

novedejulho.py é o programa inicial do projeto. Ele aciona mais de três dezenas de scripts que fazem o download dos dados diretamente da Alesp, por meio do Portal dos Dados Abertos, e do Repositório de Dados Eleitorais, do TSE.

Pelo começo do nome dos arquivos é possível saber a qual categoria pertence cada script:

  • cands para dados dos deputados quando candidatos nas eleições de 2014 e 2018 (candidatos e bens declarados)
  • coms para dados de comissões (votações, sessões, presenças etc.)
  • deps para dados de deputados (bases eleitorais, áreas de atuação, gastos na cota etc.)
  • docs para dados de documentos (projetos de lei, autores, pareceres etc.)
  • legs para dados de legislação (normas, anotações, temas etc.)
  • servs para dados de servidores (lotações, cargos, salários etc.)

Alguns desses scripts terminam com indice no nome. Isso indica que os dados raspados por meio deles servem como foreign keys em agregações.

Todos os dados são salvos em arquivos .csv (para ler em Excel ou LibreOffice Calc) e .xz (para usar com Pandas). Também são agregados em um banco de dados .db (para acessar com SQL).

Em 8 de março de 2019, novedejulho.py baixou 67 arquivos, sendo:

  • 33 arquivos .csv, com tamanho total de ~339 Mb
  • 33 arquivos .xz, com tamanho total de ~27 Mb
  • 1 arquivo .db, com tamanho total de ~374 Mb

Outros scripts estão em produção, como para baixar contratos firmados pela Alesp e processos agregados no Tribunal de Justiça de São Paulo.

Dados indisponíveis nesses repositórios são obtidos por meio de raspagem dos sites oficiais.

Nove de Julho é um projeto escrito em Python. Para rodar os scripts são requisitos:

  • ter Python na sua máquina (versão 3),
  • fazer o download do projeto, e
  • instalar as bibliotecas necessárias

Instruções para usuários com experiência em Python e Github

Caso você tenha algum conhecimento de Python e de Github, basta clonar este repositório do Github...

$ git clone https://github.com/rodolfo-viana/novedejulho.git

...e instalar as bibliotecas necessárias.

$ cd novedejulho
$ pip install -r requirements.txt

Instruções para usuários sem experiência

Python não vem "de fábrica" com Windows, e se você é usuário de MacOS ou Linux, possivelmente tem a versão 2.7 na sua máquina, que se tornará obsoleta em breve.

Para instalar o Python 3, que é a versão usada no projeto, siga este passo a passo:

  • Vá à página oficial de download de Python
  • Faça o download da versão mais recente para seu sistema operacional (Windows, MacOS, Linux)
  • Clique no arquivo para começar a instalação
  • Durante a instalação, certifique-se de clicar nas opções Install launcher for all users (recommended) e Add Python x.x to PATH
  • Clique no botão Install Now
  • Quando aparecer a mensagem Do you want the allow the following program to make changes to this computer?, escolha Yes
  • Uma janela de instalação irá aparecer. Quando a barra de progresso chegar ao fim, a instalação estará completa
  • Para checar se a instalação correu perfeitamente, vá ao console (aplicativo Terminal no MacOS e Linux, e Prompt de Comando no Windows) e digite python --version ou python3 --version, caso seu sistema seja MacOS ou Linux. Depois de pressionar Enter, você terá uma mensagem com a versão de Python que instalou —por exemplo, Python 3.6.5. Isso significa que a instalação foi concluída com êxito

Depois de instalar Python 3, é hora de baixar os arquivos do Nove de Julho:

  • Faça o download do arquivo .zip (~22 KB)
  • Descompacte o .zip e terá uma pasta chamada novedejulho-master, com todos os arquivos (~128 KB)

Agora que você tem Python 3 e os scripts de Nove de Julho, resta apenas a instalação das bibliotecas:

  • No console (aplicativo Terminal no MacOS e Linux, e Prompt de Comando no Windows), navegue até a pasta novedejulho-master
  • Dentro da pasta, digite $ pip install -r requirements.txt
  • Aguarde o término da instalação das bibliotecas e pronto: você já pode começar a usar o Nove de Julho

Não é preciso ter experiência com qualquer linguagem de programação para rodar os scripts. Basta seguir as instruções detalhadas de como instalar Python, os scripts do Nove de Julho e alguns módulos auxiliares.

Estrutura

Depois da instalação, você vai notar a seguinte estrutura de diretórios:

novedejulho/
├── novedejulho/
│   ├── data_sample_xxxx-xx-xx/
│   │   ├── cand.xz
│   │   ├── cand_bens.xz
│   │   └── [...]
│   ├── ndj_toolbox/
│   │   ├── __init__.py
│   │   ├── fetch.py
│   │   └── format.py
│   ├── __init__.py
│   ├── cands.py
│   ├── coms.py
│   ├── deps.py
│   ├── docs.py
│   ├── legs.py
│   ├── novedejulho.py
│   └── servs.py
├── tests/
│   └── test_parse_xml.py
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
└── requirements.txt

Parece confuso, mas o único script que você rodará é novedejulho.py —os demais são acessórios ou arquivos utilitários. Então, no Terminal (MacOS e Linux) ou Prompt de Comando (Windows), vá até o diretório novedejulho > novedejulho e digite:

$ python novedejulho.py

(Se não funcionar, troque python por python3.)

A partir desse momento, aparecerão mensagens na tela mostrando quais tarefas estão sendo executadas. Geralmente a execução completa leva menos de 20 minutos. Quando aparecer a mensagem de finalização, acesse a pasta data_xxxx-xx-xx (em que os x representam, respectivamente, ano, mês e dia) e lá encontrará os arquivos.

Aos que desejam colaborar mas não sabem codar, uma forma muito grande de ajuda é mandando issues no repositório no Github com bugs ou ideias para melhorar o projeto.

Se quiser colocar a mão em códigos e ajudar com aprimoramentos e correções, faça um fork do repositório no Github. Depois:

$ git clone https://github.com/{seu-nome-de-usuario}/novedejulho.git

Não esqueça de criar um branch com seu nome de usuário e o que deseja alterar...

$ git checkout -b {nomedeusuario_oquequeralterar}
$ git commit -am "{Mensagem dizendo como alterou o original}"
$ git push origin {nomedeusuario_oquequeralterar}

...E abrir um pull request. Prometo responder com agilidade.

Desenvolvido com Python 3.6.5

Bibliotecas em requirements.txt:

  • beautifulsoup4==4.7.1
  • coverage==4.5.2
  • pandas==0.24.1
  • pytest==4.3.0
  • pytest-cov==2.6.1
  • requests==2.21.0
  • tqdm==4.31.1

Tamanhos:

  • Repositório: ~856 MB
  • Download: ~128 KB

Badges de cobertura:

  • Maintainability
  • Build Status
  • codecov

Para quem é o Nove de Julho?

Como agregador de dados da Assembleia Legislativa de São Paulo, o projeto pode ser útil para estudantes de política e ciências sociais, jornalistas que cobrem política estadual, cientistas de dados que queiram fazer análises e mesmo usuários que, apesar de não terem conhecimento de tecnologia ou política pública, se interessam pelo que fazem nossos deputados estaduais.

Mas é possível usar o Nove de Julho sem conhecimento de programação?

Sim. Basta seguir os passos em Instalação e, depois, ler o Manual de uso.

Com que frequência os dados são atualizados?

A periodicidade varia. Algumas bases são atualizadas diariamente, como gastos na cota parlamentar; outras, mensalmente, como salários de servidores; outras, ainda, a cada eleição, como bens declarados à justiça eleitoral. Como o Nove de Julho busca dados em sua origem, os conjuntos baixados são aqueles disponíveis nos portais da Alesp, do TSE e das demais fontes, com a atualização mais recente.

Alguns dos dados baixados já estão à disposição nos portais de transparência e repositório de dados. Qual é a utilidade do projeto, então?

Há dados que não são disponibilizados nesses espaços, como os salários dos servidores, disponíveis apenas no site da Alesp, em formato HTML. Além disso, os dados não estão agregados às outras bases, tampouco formatados. O objetivo é este: colocar todas as informações num espaço só, com uma formatação única, permitindo a leitura por máquinas.

Por que o projeto chama Nove de Julho?

O nome do edifício-sede da Assembleia Legislativa de São Paulo é Palácio Nove de Julho, em homenagem à data de início do movimento constitucionalista de 1932.

Quem financia o projeto?

Ninguém, pois não há custo envolvido. O Nove de Julho demanda apenas tempo de seu autor e de seus colaboradores.

O Nove de Julho lida com informações de políticos. Há algum viés no projeto?

Não. A partir do momento que o script é acionado, ele baixa informações de todos os deputados, independentemente de partido ou matriz ideológica.