Skip to main content

a python parser for the .fec file format

Project description

This is still in very early testing. I wouldn't recommend relying on this library for anything important. That said, if you do try using it, I'd love to hear about it!

The goal of this project is to parse data in the .fec format and return a native python object. This is designed to work with either the bulk data zip files or from http requests like this and includes helper methods for both.

Installation

To get started, install from pypi by running the following command in your preferred terminal:

pip install fecfile

Usage (the hard way)


import fecfile

import json



with open('1229017.fec') as file:

    parsed = fecfile.loads(file.read())

    print(json.dumps(parsed, sort_keys=True, indent=2, default=str))

or:


import fecfile

import json

import requests



url = 'http://docquery.fec.gov/dcdev/posted/1229017.fec'

r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})

parsed = fecfile.loads(r.text)

print(json.dumps(parsed, sort_keys=True, indent=2, default=str))

Note: the docquery.fec.gov urls cause problems with the requests library when a user-agent is not supplied. There may be a cleaner fix to that though.

Usage (the easy way)


import fecfile

import json



filing1 = fecfile.from_file('1229017.fec')

print(json.dumps(filing1, sort_keys=True, indent=2, default=str))



filing2 = fecfile.from_http(1146148)

print(json.dumps(filing2, sort_keys=True, indent=2, default=str))

Note the default=str parameter - that allows serializing to json dictionaries that contain datetime objects.

Developing locally

Assuming you already have Python3 and the ability to create virtual environments installed, first clone this repository from github and cd into it:


git clone https://github.com/esonderegger/fecfile.git

cd fecfile

Then create a virtual environment for this project (I use the following commands, but there are several ways to get the desired result):


python3 -m venv ~/.virtualenvs/fecfile

source ~/.virtualenvs/fecfile/bin/activate

Next, install the dependencies:


python setup.py

Finally, make some changes, and run:


python tests.py

Thanks

This project would be impossible without the work done by the kind folks at The New York Times Newsdev team. In particular, this project relies heavily on fech although it actually uses a transformation of this fork.

Contributing

I would love some help with this, particularly with the mapping from strings to int, float, and datetime types. Please create an issue or make a pull request. Or reach out privately via email - that works too.

To do:

Almost too much to list:

  • Handle files from before v6 when they were comma-delimited

  • create a dumps method for writing .fec files for round-trip tests

  • add more types to the types.json file

  • elegantly handle errors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fecfile-0.2.2.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

fecfile-0.2.2-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file fecfile-0.2.2.tar.gz.

File metadata

  • Download URL: fecfile-0.2.2.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.4.5

File hashes

Hashes for fecfile-0.2.2.tar.gz
Algorithm Hash digest
SHA256 beaac8c4adacd2693f8c858dcdbfd37a84b98e8dd954df74f3fe3e9cfab09cb1
MD5 d4a74577f5570333e4a3bf0b43a6c300
BLAKE2b-256 1cc03bf557486aa41c30721af9240f3770689a3e2c0f56c572ca33e0cfe1123e

See more details on using hashes here.

File details

Details for the file fecfile-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: fecfile-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.4.5

File hashes

Hashes for fecfile-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d8f897fa599dd980af7f722f5a7f82a8e9be370df8c66701d8260d667dca698e
MD5 9be9212820dd2f67cbfdf547560dadb7
BLAKE2b-256 30f713a260fd392cacf39a288edc3ef71abbd166323cc4825d4055a37bfe5a5a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page