2008-10-23 <email address hidden>
* README (Features):
Release Version 0.8
Highlight the features of ElectionAudits
Update ToDo
2008-10-22 <email address hidden>
* electionaudits/views.py (StatsForm):
New ad-hoc /stats/ form: statistics for a given margin, confidence
* electionaudits/varsize.py (rule_of_thumb):
Call rule_of_thumb from paper() for consistency
Bug: needed "s" parameter to bmin() call for SAFE
* electionaudits/parsers.py (parse_csv):
introduce --batchid option for distinguishing data from different files
* electionaudits/models.py (Contest.selection_stats):
Cache selection_stats varsize results for speed
Include prose form of stats in audit report
2008-10-21 <email address hidden>
* electionaudits/varsize.py (bmin):
Handle infinities with margin of 0 votes and problems with large margins
Eliminate scipy requirement for electionaudits: only import where needed
* electionaudits/parsers.py (parse_csv):
use -e option as election name for csv also
2008-10-20 <email address hidden>
* electionaudits/parsers.py (main):
Rename makeauditunits to electionaudits/parsers.py
Make it easier to use, via a new manage.py "parse" command:
electionaudits/management/commands/parse.py
Rename audittools directory to "root"
* electionaudits/util.py (pushAuditUnit):
change min_ballots from 5 to 25
* electionaudits/models.py (Contest.selection_stats):
Make varsize statistics for Contest available via selection_stats()
First cut - not saving results - really inefficient....
* electionaudits/varsize.py (read_precincts):
Make it easier to use varsize logic from electionaudits
Accept a list (iterable) of precincts as the input source as well as a
filename.
Return the most interesting results from paper() in a dict.
Add parameters (with existing defaults) to paper(): alpha and s
Don't generate plot or print full precinct list unless called
as main program.
Print various quantities to 4 decimal places.
Add shorthand for specifying precinct sizes on the command-line
2008-10-20 <email address hidden>
* electionaudits/varsize.py:
Don't run anything when simply loading as a module, and call main() when run as command
Resolve main() error: "global name 'V' is not defined"
Resolve main() error: "print_precinct_stats() takes exactly 2 argument (0 given)"
Add default for "s" argument to negexp_probs_for_confidence
2008-10-17 <email address hidden>
* electionaudits/varsize.py:
add varsize.py for auditing stats - original version from Ron Rivest
http://people.csail.mit.edu/rivest/pps/varsize.py with MIT license
* README (Acknowledgements):
Add acknowledgements
2008-10-15 <email address hidden>
rename electionaudit module to electionaudits
improve README
2008-10-15 <email address hidden>
* makeauditunits.py (main):
fix DJANGO_SETTINGS_MODULE bug
2008-10-15 <email address hidden>
* makeauditunits.py (main):
print summary results of tally at end
2008-10-14 <email address hidden>
* makeauditunits.py (parse_xml_crystal):
convert parse_xml_crystal etc to use AuditUnits
Add "--election" option to name the election.
(parse_csv):
add EarlyVotes
* electionaudit/models.py (Batch):
Change election day abbreviation to "ED", not "EL" (similar to Early)
Avoid duplicate VoteCount, Batch, ContestBatch via Meta unique_together
2008-10-14 <email address hidden>
* makeauditunits.py (parse_xml_crystal):
finally, create EL and EV database records, now that I can test those
if xml file is "cumulative.xml", use parent directory name
2008-10-13 <email address hidden>
* makeauditunits.py (main):
define settings module without environment var DJANGO_SETTINGS_MODULE
2008-10-10 <email address hidden>
add setup.py and ez_setup.py
* electionaudit/templates/electionaudit/report.html:
don't use writing-mode: tb-rl on vote totals
* audittools/settings.py:
comment out 'lukeplant_me_uk.django.validator' and 'django_extensions'
Improve documentation
2008-10-09 <email address hidden>
* electionaudit/templates/electionaudit/report.html:
sort columns alphabetically to deal with variable order, mismatches
2008-10-08 <email address hidden>
* audittools/templates/base.html:
only show /validator/ if in debug mode
2008-10-08 <email address hidden>
Version 0.7.0
Change from GPLv3 to MIT license for wider uptake, less complication
* makeauditunits.py (parse_csv):
Finish & refactor code to combine ballots for privacy for csv
remove models.AuditUnit: util.AuditUnit does what we really want
finally remove models.Batch.cumulative - we combine when we read in
* electionaudit/urls.py:
fix how settings are imported to use generic method so validator works
with ./manage.py runserver_plus --settings settings_debug
* electionaudit/templates/electionaudit/reports.html:
fix some bad html
2008-10-08 <email address hidden>
* electionaudit/templates/electionaudit/index.html:
Add introduction to home page
2008-10-07 <email address hidden>
* electionaudit/util.py (Pipe.push):
Write util module with AuditUnit class to combine them for privacy
Add pushAuditUnit and class Push, ready to refactor makeauditunits
2008-10-06 <email address hidden>
* audittools/templates/404.html:
add 404.html and 500.html
Describe csv in README
Better titles in templates
2008-10-05 <email address hidden>
* electionaudit/urls.py:
fix settings import in urls.py
* makeauditunits.py (parse_csv):
name csv election after filename
* electionaudit/templates/electionaudit/reports.html:
add headers and audit unit counts to contest list
2008-10-05 <email address hidden>
* Version 0.6.0
* electionaudit/models.py (Choice):
(Contest.tally):
add tally funtion to calculate margins
add contest field to Choice model
speed up via a single transaction for parsing each file:
from 2:53 to 0:44 for testp.xml
* makeauditunits.py (parse_csv):
new function to parse csv files like that from San Mateo county
2008-10-04 <email address hidden>
* electionaudit/templates/electionaudit/index.html:
New home page via simple generic view by default (LP: #278330)
* electionaudit/templates/electionaudit/contest_detail.html:
Get /contests/*/ to list the relevant batches, FWIW
2008-10-03 <email address hidden>
* makeauditunits.py:
fixed documentation: must set $DJANGO_SETTINGS_MODULE "(LP: #277341)
* audittools/settings.py:
set full path for sqlite3 db so makeauditunits works in any dir
2008-10-01 <email address hidden>
* Version 0.5.0
* Improve README; Add GPL v3 COPYING file, doc/model_graph.png
* ToDo: split out from makeauditunits.py
* electionaudit/models.py (ContestBatch):
add contest_ballots method, and add count to report
2008-09-29 <email address hidden>
* makeauditunits.py (do_contests):
Version"0.4.0"
Introduce ContestBatch record and report of AuditUnits in a Contest
2008-09-27 <email address hidden>
* electionaudit/views.py (report):
added report view, template,
added custom admin to display auditunits in a table
trimmed batch name
add htmlvalidator
fix template errors
add flatpages and home page
2008-09-25 <email address hidden>
* electionaudit/models.py (Choice.__str__):
add django models and get them working with django generic admin
2008-09-22 <email address hidden>
* makeauditunits.py:
Do single-row output for --subtract
Partly move to printf() vs print
Move files to testdata, test again
Add more abbreviations
Fix replace_dict to be ordered list: replacements
Move data info to testnotes
2008-09-22 <email address hidden>
* makeauditunits.py:
Add --contest option
add --subtract to report differences for incrementals
sort reports
2008-09-22 <email address hidden>
* makeauditunits.py:
Separate "Early" from "Absentee", report both
2008-09-20 <email address hidden>
* makeauditunits.py (make_audit_unit):
divide into early and election results, without yet using Result class
Version 0.3.0
2008-09-14 <email address hidden>
* makeauditunits.py (make_audit_unit):
start profiling
general cleaning, todo additions
fix parties to just get one
work on better printing