Reggie is a command-line tool and Python package for parsing voter registration files in the US. Reggie will convert raw voter files into a single voter file that includes voter history data if available.
Reggie is created by VoteShield, a data analytics tool designed to protect the integrity of American elections by monitoring changes to the voter rolls.
Background
Voter registration files are maintained in almost every state, and though they contain different data, each one usually includes basic data about every registered voter in that state and usually includes a voter history which usually includes last or each time they voted.
Each state has its own laws, systems, and processes on how they manage, store, define, and allow access to their voter registration files.
Supported states
See the reggie/configs/ directory for a possibly more accurate list of states that are currently supported, but here is the current list with identifiers:
| State | Identifier | Notes |
|---|---|---|
| Arizona | arizona |
TODO: Note about arizona2 |
| Colorado | colorado |
|
| Florida | florida |
|
| Georgia | georgia |
|
| Iowa | iowa |
|
| Kansas | kansas |
|
| Michigan | michigan |
|
| Minnesota | minnesota |
|
| Missouri | missouri |
|
| Nevada | nevada |
|
| New Jersey | new_jersey |
TODO: Note about new_jersey2 |
| New York | new_york |
|
| North Carolina | north_carolina |
|
| Ohio | ohio |
|
| Pennsylvania | pennsylvania |
|
| Texas | texas |
How it works
Many states keep voter history in their voter file, often kept in a separate file at the county level. Reggie will combine each of these files, and group the history by turning the collection of voter history into a column in the voter registration file called all_history. The specifics of how this should be done can be found here.
Usage
Python
from reggie import convert_voter_file nc_dataframe, metadata = convert_voter_file(state='north_carolina', local_file='nc_2018-12-22.zip', date='2018-12-22')
Command Line
The command reg is provided by the package. Utilize reg --help to get help on options.
$ reg --state north_carolina --local_file nc_2018-12-22.zip --file_date 2018-12-22
Installation
You can install Reggie as a git resource.
pip install git+https://github.com/Voteshield/reggie.git
Contributing and development
Get code and install
Reggie requires Python 3.7 or greater. All commands are assumed to be within a terminal or command line application.
- Checkout or download the code from Github.
- Make sure to go into the project directory:
$ cd reggie - (optional, though suggested) Create and utilize a virtual environment.
- Install dependencies:
$ pip install -e .
Adding and managing a state
See the wiki for more detailed information. The short version is that a state has two parts:
- The state config file See docs/STATE-CONFIGS.md.
- The state preprocessor. See docs/PREPROCESSORS.md.
Tests
To run tests, use the following command: $ python -m pytest
Note that because the voter file for North Carolina is entirely public and can be found on the state's website, a smaller version of the NC file is included in the reggie/test_data/ directory.