Como estou usando Fech (a biblioteca Ruby do buscador e analisador de dados de arquivamento FEC) em um projeto Python

Fech , do New York Times, é uma ótima biblioteca Ruby para acessar os dados de arquivamento da FEC (Federal Election Commission). Estou trabalhando em um projeto em Python que requer a capacidade de baixar e analisar dados de arquivamento FEC. Aqui está como estou usando Fech em um projeto Python para construir um dicionário de dados de resumo e contribuição para um arquivamento.

No arquivo filing.rb:

require "fech"
require "json"

filing
= Fech::Filing.new(ARGV[0])
filing
.download
data
= {
"summary" => filing.summary,
"contributions" => filing.rows_like(/^sa/)
}
puts data
.to_json

No meu arquivo python:

import json
import os
import subprocess

def fetch_filing(fileno):
"""Assumes filing.rb is in same directory as this file."""
fechpath
= os.path.join(os.path.dirname(__file__), 'filing.rb')
p
= subprocess.Popen(['ruby', '-rubygems', fechpath, fileno],
stdout
=subprocess.PIPE)
output
= p.communicate()
return json.loads(output[0])

Uma chamada para fetch_filing com um número de arquivamento retorna um dicionário com o resumo das chaves e as contribuições.

Fech é bem feito. Esta abordagem de subprocesso pode não ser o código mais elegante do mundo, mas está me poupando de escrever um monte de código de análise e reinventar a roda e, o mais importante, posso manter o projeto em andamento com busca e análise de arquivamento FEC sendo um problema resolvido, graças ao time do NYTimes. Confira Fech no github: https://github.com/NYTimes/Fech .