Skip to main content

Schema validations, migrations, and conversions to standardize the Ranked Choice Voting ecosystem

Project description

Python package Documentation Status

RCV Formats

A collection of parsers and converters from various RCV formats to the standard Universal RCV Tabulator format.

Validation

The following schemas can be validated. Currently, validation does not guarantee they can be imported: the validators make no sanity checks to ensure the math works out, or that there are no typos in candidate names. Rather, they only validate the structure.

  1. The Universal RCV Tabulator JSON format
  2. The Opavote JSON format
  3. The ElectionBuddy CSV format

You can run the validation and examine errors via:

from rcvformats.schemas import universaltabulator

schema = universaltabulator.SchemaV0()
is_valid = schema.validate_file('/path/to/file.json')

if not is_valid:
  print(schema.get_last_error())

Valid schema validators are:

from rcvformats.schemas.electionbuddy import SchemaV0
from rcvformats.schemas.opavote import SchemaV1_0
from rcvformats.schemas.universaltabulator import SchemaV0

Conversion

You can convert from any of the supported formats and to the Universal RCV Tabulator format. The currently supported formats are:

  1. ElectionBuddy CSVs
  2. Opavote JSONs

You can run the conversion via:

from rcvformats.conversions import electionbuddy

converter = electionbuddy.ElectionBuddyConverter()
try:
  converter.convert_to_ut(filename)
except Exception as e:
  print("Errors: ", e)

Valid converters are:

from rcvformats.conversions.electionbuddy import ElectionBuddyConverter
from rcvformats.conversions.opavote import OpavoteConverter

Upcoming plans

  1. Allow any format to be converted both to and from the Universal Tabulator format
  2. Implement schema validation and migration for the ElectionBuddy CSV
  3. More unit tests
  4. Create both structure and data validations for the Universal Tabulator format

Running test suite

Just run nosetests in the root directory

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

rcvformats-0.0.7.tar.gz (11.2 kB view hashes)

Uploaded Source

Built Distribution

rcvformats-0.0.7-py3-none-any.whl (15.6 kB view hashes)

Uploaded Python 3

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