)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"465d4345e6248dbe9d4b14c8447414035fbc81ce","unresolved":false,"context_lines":[{"line_number":9,"context_line":"in Python 3 The SafeConfigParser class has been renamed"},{"line_number":10,"context_line":"to ConfigParser in Python 3.2 [1]. The alias SafeConfigParser"},{"line_number":11,"context_line":"maybe removed in future versions of Python 3. Use ConfigParser"},{"line_number":12,"context_line":"instead of SafeConfigParser in Python 3"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1] http://bugs.python.org/issue10627"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a8bc5a2_c0d7b7bd","line":12,"updated":"2016-09-28 11:40:53.000000000","message":"This justification is now only partially true.  We\u0027re switching from SafeConfigParser to ConfigParser because we\u0027re we\u0027re not explicitly using the \u0027Safe\u0027 functionality. So it make the code potentially neater if SafeConfigParser is even de-aliased in python3","commit_id":"1279ed35fb3e9e2a32d6097c3560977c9f7bcde6"}],"openstack_requirements/project.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"4596d29260713a6534b5ac6477ebd860d6ef5a87","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    if six.PY3:"},{"line_number":63,"context_line":"        c \u003d configparser.ConfigParser()"},{"line_number":64,"context_line":"    else:"},{"line_number":65,"context_line":"        c \u003d configparser.SafeConfigParser()"},{"line_number":66,"context_line":"    c.readfp(io.StringIO(project[\u0027setup.cfg\u0027]))"},{"line_number":67,"context_line":"    if not c.has_section(\u0027extras\u0027):"},{"line_number":68,"context_line":"        return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_aa07cb1a","line":65,"updated":"2016-09-23 07:18:59.000000000","message":"We should look at exactly what \u0027Safe\u0027 gives us and decide if we can just risk it and use ConfigParser in both py2 and py3","commit_id":"a6591b1d1e496c7b090eea79dbb953bbae0f3943"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"201392c88af0d625c26da38918dc719c9ea9a629","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    if six.PY3:"},{"line_number":63,"context_line":"        c \u003d configparser.ConfigParser()"},{"line_number":64,"context_line":"    else:"},{"line_number":65,"context_line":"        c \u003d configparser.SafeConfigParser()"},{"line_number":66,"context_line":"    c.readfp(io.StringIO(project[\u0027setup.cfg\u0027]))"},{"line_number":67,"context_line":"    if not c.has_section(\u0027extras\u0027):"},{"line_number":68,"context_line":"        return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_20e78ead","line":65,"in_reply_to":"5a8bc5a2_aa07cb1a","updated":"2016-09-28 04:51:16.000000000","message":"Okay so according to [1] the only benefit SafeConfigParseer() gives us is a better .set() method.  We don\u0027t use that in our code and according to my reading of [2] it isn\u0027t used internally\n\nSo the right fix here is to just use ConfigParser() on both py2 and py3\n\n\n\n[1] https://docs.python.org/2/library/configparser.html#ConfigParser.SafeConfigParser.set\n[2] https://github.com/python/cpython/blob/2.7/Lib/ConfigParser.py","commit_id":"a6591b1d1e496c7b090eea79dbb953bbae0f3943"}]}
