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.
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 it's own laws, systems, and processes on how they manage, store, define, and allow access to their voter registration files.
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 |
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.
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')
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
You can install Reggie as a git resource.
pip install git+https://github.com/Voteshield/reggie.git
Reggie requires Python 3.6 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 .
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.
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.