)]}'
{"trove/guestagent/common/operating_system.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"03787368d93f3ee57738650ef263374efaccb9bd","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \"\"\""},{"line_number":172,"context_line":"    # The files gets removed automatically once the managing object goes"},{"line_number":173,"context_line":"    # out of scope."},{"line_number":174,"context_line":"    with tempfile.NamedTemporaryFile(\u0027wb\u0027, 0, delete\u003dFalse) as fp:"},{"line_number":175,"context_line":"        if encode:"},{"line_number":176,"context_line":"            fp.write(codec.serialize(data))"},{"line_number":177,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a9d85d2_be39c143","line":174,"range":{"start_line":174,"start_character":39,"end_line":174,"end_character":44},"updated":"2016-06-21 15:41:39.000000000","message":"(-1 to draw attention) Wouldn\u0027t this need to be changed as well?","commit_id":"037cfa9353a581c7d1edcc1a05a9f38593cd6aee"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"78480e74cb454bd293913cd05b21c86ff629418e","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \"\"\""},{"line_number":172,"context_line":"    # The files gets removed automatically once the managing object goes"},{"line_number":173,"context_line":"    # out of scope."},{"line_number":174,"context_line":"    with tempfile.NamedTemporaryFile(\u0027wb\u0027, 0, delete\u003dFalse) as fp:"},{"line_number":175,"context_line":"        if encode:"},{"line_number":176,"context_line":"            fp.write(codec.serialize(data))"},{"line_number":177,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_b562e214","line":174,"range":{"start_line":174,"start_character":39,"end_line":174,"end_character":44},"in_reply_to":"5a9d85d2_be39c143","updated":"2016-06-21 17:10:13.000000000","message":"Done","commit_id":"037cfa9353a581c7d1edcc1a05a9f38593cd6aee"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c6ab5d47393b73bbd1195c35214da8ae156f0c59","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \"\"\""},{"line_number":172,"context_line":"    # The files gets removed automatically once the managing object goes"},{"line_number":173,"context_line":"    # out of scope."},{"line_number":174,"context_line":"    with tempfile.NamedTemporaryFile(\u0027w\u0027, 0, delete\u003dFalse) as fp:"},{"line_number":175,"context_line":"        if encode:"},{"line_number":176,"context_line":"            fp.write(codec.serialize(data))"},{"line_number":177,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_fda3a84d","line":174,"range":{"start_line":174,"start_character":41,"end_line":174,"end_character":44},"updated":"2016-06-21 20:11:45.000000000","message":"Above you also removed this and added a \u0027flush\u0027 call. Just sayin\u0027  ;)","commit_id":"edace46202cf37b93c5d42938eb8b594c980ae91"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"1b78070f675fba38a2455f9218c6ce4ea31999c4","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \"\"\""},{"line_number":172,"context_line":"    # The files gets removed automatically once the managing object goes"},{"line_number":173,"context_line":"    # out of scope."},{"line_number":174,"context_line":"    with tempfile.NamedTemporaryFile(\u0027w\u0027, 0, delete\u003dFalse) as fp:"},{"line_number":175,"context_line":"        if encode:"},{"line_number":176,"context_line":"            fp.write(codec.serialize(data))"},{"line_number":177,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_8af843e7","line":174,"range":{"start_line":174,"start_character":41,"end_line":174,"end_character":44},"in_reply_to":"3aaa91ec_fda3a84d","updated":"2016-06-22 07:25:00.000000000","message":"Oh. As I expected in the commit message, text mode + unbuffered doesn\u0027t work anymore in Python 3! It\u0027s an obvious bug which is now fixed in my new changeset.","commit_id":"edace46202cf37b93c5d42938eb8b594c980ae91"}],"trove/guestagent/datastore/manager.py":[{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"1111b475beaae2d301affeaec166cbd61643b42e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except Exception as ex:"},{"line_number":287,"context_line":"            self.prepare_error \u003d True"},{"line_number":288,"context_line":"            LOG.exception(_(\"An error occurred preparing datastore: %s\") %"},{"line_number":289,"context_line":"                          encodeutils.exception_to_unicode(ex))"},{"line_number":290,"context_line":"            raise"},{"line_number":291,"context_line":"        finally:"},{"line_number":292,"context_line":"            LOG.info(_(\"Ending datastore prepare for \u0027%s\u0027.\") % self.manager)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_85ff1801","line":289,"updated":"2016-06-17 20:23:33.000000000","message":"Why is this necessary?  It already works in Python2, and in Python 3 the message is already unicode so this is effectively a noop.  We can\u0027t really be expected to remember to always encode exception messages.","commit_id":"037cfa9353a581c7d1edcc1a05a9f38593cd6aee"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"03787368d93f3ee57738650ef263374efaccb9bd","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except Exception as ex:"},{"line_number":287,"context_line":"            self.prepare_error \u003d True"},{"line_number":288,"context_line":"            LOG.exception(_(\"An error occurred preparing datastore: %s\") %"},{"line_number":289,"context_line":"                          encodeutils.exception_to_unicode(ex))"},{"line_number":290,"context_line":"            raise"},{"line_number":291,"context_line":"        finally:"},{"line_number":292,"context_line":"            LOG.info(_(\"Ending datastore prepare for \u0027%s\u0027.\") % self.manager)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a9d85d2_83674e24","line":289,"in_reply_to":"7aa08908_482267ba","updated":"2016-06-21 15:41:39.000000000","message":"This should probably be removed entirely (since LOG.exception logs the trace/message), but I understand that you\u0027re trying to limit the changes to only PY27-\u003ePY3.  We\u0027ll fix this in a follow-up changeset.","commit_id":"037cfa9353a581c7d1edcc1a05a9f38593cd6aee"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"0ad3da087cc2a04b860cbf4374c5b9ddf6256c60","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except Exception as ex:"},{"line_number":287,"context_line":"            self.prepare_error \u003d True"},{"line_number":288,"context_line":"            LOG.exception(_(\"An error occurred preparing datastore: %s\") %"},{"line_number":289,"context_line":"                          encodeutils.exception_to_unicode(ex))"},{"line_number":290,"context_line":"            raise"},{"line_number":291,"context_line":"        finally:"},{"line_number":292,"context_line":"            LOG.info(_(\"Ending datastore prepare for \u0027%s\u0027.\") % self.manager)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_482267ba","line":289,"in_reply_to":"7aa08908_85ff1801","updated":"2016-06-17 20:44:32.000000000","message":"On Python 3, the \u0027message\u0027 attribute of exceptions is gone. Try to run the test_manager.py on Python 3 without my fix ;-)\n\n$ git checkout master\n$ . .tox/py34/bin/activate\n(py34) haypo@smithers$ python -bb -m testtools.run trove/tests/unittests/guestagent/test_manager.py \n...\nAttributeError: \u0027Exception\u0027 object has no attribute \u0027message\u0027","commit_id":"037cfa9353a581c7d1edcc1a05a9f38593cd6aee"}],"trove/tests/unittests/guestagent/test_manager.py":[{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"1111b475beaae2d301affeaec166cbd61643b42e","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                apply_overrides_on_prepare\u003dMagicMock("},{"line_number":464,"context_line":"                    side_effect\u003dexpected_failure"},{"line_number":465,"context_line":"                )):"},{"line_number":466,"context_line":"            expected_msg \u003d encodeutils.exception_to_unicode(expected_failure)"},{"line_number":467,"context_line":"            self.assertRaisesRegexp("},{"line_number":468,"context_line":"                Exception, expected_msg,"},{"line_number":469,"context_line":"                self.manager.prepare,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_c8781792","line":466,"updated":"2016-06-17 20:23:33.000000000","message":"Again, this already works in Python2, so why why is this change necessary?","commit_id":"037cfa9353a581c7d1edcc1a05a9f38593cd6aee"}]}
