{"push_id":977986795,"size":39,"distinct_size":11,"ref":"refs/heads/email-alerts","head":"032bc17b3fc9ce9dfb8e57c210dcc77a54704063","before":"13b9a5720c6b3be1785ec2d796214715fbb87126","commits":[{"sha":"ec15860a80dd8808ef3b429ca9da56780db2cb92","author":{"email":"7ece978167073d004197c0d6655799d1a2ce976e@pobox.com","name":"Mark Longair"},"message":"Person page: don't show a big list of elections they're not standing in\n\nIf there are 2 or fewer elections known to the site, it's probably\nfine to show whether they're standing in both.  However, when there\nare more elections, this begins to look weird - in the UK elections\nin 2016, there'll just be a list of 10 or so \"don't know\" indications\nin the \"Constituencies\" section.\n\nSo, this commit makes that cut-off, and if there are more than 2\nelections known to the site, just shows the constituencies someone's\nknown to be standing in (or did stand in).\n\nThis also changes the section heading to \"Candidacies\" which is more\ngeneral than \"Constituencies\", and hopefully just as clear.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/ec15860a80dd8808ef3b429ca9da56780db2cb92"},{"sha":"c96a6ec7b815aa77f034603bb2b8328b05aedb67","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Bump dependent package versions to Python 3 compatible versions\n\nThis incudes updates to bs4 and django-date-extensions","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/c96a6ec7b815aa77f034603bb2b8328b05aedb67"},{"sha":"372ab1024a2c423ece4305c03a5cdafe6dced4fa","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Use the new exception syntax for Python 3\n\nSee https://www.python.org/dev/peps/pep-3109/ for more details.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/372ab1024a2c423ece4305c03a5cdafe6dced4fa"},{"sha":"74d03267e785e90b8c590588e10620fc653a25eb","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"print is a function, not a statement, in Python 3\n\nThis works under Python >= 2.6 too if you have:\n\n  from __future__ import print_function","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/74d03267e785e90b8c590588e10620fc653a25eb"},{"sha":"df27c9f4cf6444db7e230fe2afc97740cbb07bf1","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Fix up imports to be Python 3 compatible","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/df27c9f4cf6444db7e230fe2afc97740cbb07bf1"},{"sha":"ee39b14ebec8d316a02a1961d9419f665e0764f4","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Get Travis to run the tests under Python 2 and Python 3","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/ee39b14ebec8d316a02a1961d9419f665e0764f4"},{"sha":"9f75aef39ec02abab5b0b366c1f1fb766b12d3d7","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Use Unicode string literals everywhere, sans the 'u' prefix","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/9f75aef39ec02abab5b0b366c1f1fb766b12d3d7"},{"sha":"786b0c2beb240de0531c199c0568347a47b8c0e1","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Refactor `merge_popit_dicts` for Python 3 compatibility\n\nUnder py3, dict.keys is a set-like view; it can't be concatenated.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/786b0c2beb240de0531c199c0568347a47b8c0e1"},{"sha":"bdea614e24ab92b0893a044d83faf3c009624e89","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Explicitly open image files in binary mode\n\nThis is so that the data is returned as bytes, not a Unicode text.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/bdea614e24ab92b0893a044d83faf3c009624e89"},{"sha":"a41d7813442ed1b4a55d8f3ba8b8a5b310c3ecf3","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Remove a redundant call to unicode()\n\nstr.format will coerce bytes to str/unicode anyway","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/a41d7813442ed1b4a55d8f3ba8b8a5b310c3ecf3"},{"sha":"54ac650a201f09d4fdb4a244a6a6b8872f6908c7","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Abstract CSV file reading and writing for Python 3 compatibility\n\nPython 2's csv module works with bytes, while Python 3's csv module\nuses unicode strings.  This commit introduces StreamDictReader\nand StreamDictWriter classes that use unicode string consistently\nfor input and output on both Python 2 and 3.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/54ac650a201f09d4fdb4a244a6a6b8872f6908c7"},{"sha":"979b918d5d73956e03e69c60e95e0626b6733e07","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Use sys.maxsize (available in Python 2 and 3) instead of sys.maxint","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/979b918d5d73956e03e69c60e95e0626b6733e07"},{"sha":"eb59964167efafb5dab2943e79d6a39f9adcde88","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Fix doctests that rely on the 'u' prefix in unicode's repr\n\nIn Python 3 there's no 'u' prefix in the repr of Unicode strings,\nso these doctests fail. So check the result of a comparison,\nnot the repr.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/eb59964167efafb5dab2943e79d6a39f9adcde88"},{"sha":"ec9a2b944964f3c819ad11cc1335a2f92730548e","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Rename raw_input to compat.input and xrange to range for Python 3","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/ec9a2b944964f3c819ad11cc1335a2f92730548e"},{"sha":"754af7d9ca80b0b82842cbe724057524a1169a35","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Migrate __unicode__ methods to be Python 3 compatible\n\nThis renames all __unicode__ methods to __str__ and decorates them with\nsix.python_2_unicode_compatible.\n\nThis commit also updates six to the latest version, which contains the\ndecorator.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/754af7d9ca80b0b82842cbe724057524a1169a35"},{"sha":"ea783470ca9e3ed688cff72170067abef108fa58","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Convert remaining uses of `unicode` and friends","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/ea783470ca9e3ed688cff72170067abef108fa58"},{"sha":"e6963bfc59807f1e94070a3b411d3fedc71fea2f","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Fix the 'dictionary changed size during iteration' under Python 3\n\nIn Python 3, `dict.values` is a 'view' and reflects changes made to the\ndict in real time.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/e6963bfc59807f1e94070a3b411d3fedc71fea2f"},{"sha":"705af04756e073a0a82fab700e5d2b436e747dbb","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"[Unicode] Decode the output of subprocess.check_output to Unicode","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/705af04756e073a0a82fab700e5d2b436e747dbb"},{"sha":"005fa0998f6d68b4a836f5059c26f2133713898e","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Use // (which does integer division in Python 2 and 3) instead of /","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/005fa0998f6d68b4a836f5059c26f2133713898e"},{"sha":"b975b6f5495d503e4b1db46a7f1c68fa83aabc07","author":{"email":"9dd7ee0792414037d8f49ac9721c7c4b5ce5ecc6@gmail.com","name":"wfdd"},"message":"Replace deprecated unittest aliases","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/b975b6f5495d503e4b1db46a7f1c68fa83aabc07"}]}