)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"1) It is not so clear as using explicit dicts"},{"line_number":11,"context_line":"2) It could produce hidden errors during refactoring"},{"line_number":12,"context_line":"3) Changing name of variable causes change in message"},{"line_number":13,"context_line":"4) Creating a lot of unused variables"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"fixes bug 1171936"},{"line_number":16,"context_line":"Change-Id: I293d7ebb875f65cce322d4938d1ae323f3aded8d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAOn%2F%2FqNs%3D","line":13,"updated":"2013-04-30 07:06:19.000000000","message":"Agreed, although this was also agreed on the dev mailing list, so I am not sure we need it here.","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"doc/ext/nova_todo.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"09484af4e93288d92c441bb0134cbbbc02654ae7","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"            filename \u003d env.doc2path(todo_info[\u0027docname\u0027], base\u003dNone)"},{"line_number":44,"context_line":"            link \u003d _(\u0027%(filename)s, line %(line_info)d\u0027) % \\"},{"line_number":45,"context_line":"                    {\u0027filename\u0027: filename, \u0027line_info\u0027: todo_info[\u0027lineno\u0027]}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"            innernode \u003d nodes.emphasis(link, link)"},{"line_number":48,"context_line":"            newnode[\u0027refdocname\u0027] \u003d todo_info[\u0027docname\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Fqu8%3D","line":45,"updated":"2013-04-29 21:13:51.000000000","message":"Any chance you could enclose the expression in parentheses so that you don\u0027t need the backslash?  Alternatively, build the dictionary and store it into a temporary variable, then % on that variable…","commit_id":"2d860650fdb5e2d56d49776e20797f03639a33a3"}],"doc/source/devref/il8n.rst":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"be97f7f432833965a6b4419e5e54c628e66c3d84","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Do not use ``locals()`` dict for formating messages because:"},{"line_number":14,"context_line":"1) It is not so clear as using explicit dicts"},{"line_number":15,"context_line":"2) It could produce hidden errors during refactoring"},{"line_number":16,"context_line":"3) Changing name of varible causes change in message"},{"line_number":17,"context_line":"4) Creating a lot of unused variables"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"If you do not follow the project conventions, your code may cause the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"AAAAOn%2F%2FsNg%3D","line":16,"updated":"2013-04-28 07:34:55.000000000","message":"typo - variable","commit_id":"253e2c4afe9976d3d35164928f7eea4f5b9b7c5c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d8cc4ed9c23ed5e80d742c9a7d6e082c4a1532ad","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Do not use ``locals()`` dict for formating messages because:"},{"line_number":14,"context_line":"1) It is not so clear as using explicit dicts"},{"line_number":15,"context_line":"2) It could produce hidden errors during refactoring"},{"line_number":16,"context_line":"3) Changing name of varible causes change in message"},{"line_number":17,"context_line":"4) Creating a lot of unused variables"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"If you do not follow the project conventions, your code may cause the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"AAAAOn%2F%2FsG0%3D","line":16,"in_reply_to":"AAAAOn%2F%2FsNg%3D","updated":"2013-04-28 19:32:20.000000000","message":"thanks \u003d)","commit_id":"253e2c4afe9976d3d35164928f7eea4f5b9b7c5c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"09484af4e93288d92c441bb0134cbbbc02654ae7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"1) It is not so clear as using explicit dicts"},{"line_number":15,"context_line":"2) It could produce hidden errors during refactoring"},{"line_number":16,"context_line":"3) Changing name of variable causes change in message"},{"line_number":17,"context_line":"4) Creating a lot of unused variables"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"If you do not follow the project conventions, your code may cause the"},{"line_number":20,"context_line":"LocalizationTestCase.test_multiple_positional_format_placeholders test to fail"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAOn%2F%2Fquk%3D","line":17,"updated":"2013-04-29 21:13:51.000000000","message":"To clean up the language a little bit:\n\n    Do not use ``locals()`` for formatting messages because:\n    1. It is not as clear as using explicit dicts.\n    2. It could produce hidden errors during refactoring.\n    3. Changing the name of a variable causes a change in the message.\n    4. It creates a lot of otherwise unused variables.","commit_id":"2d860650fdb5e2d56d49776e20797f03639a33a3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"1. It is not as clear as using explicit dicts."},{"line_number":14,"context_line":"2. It could produce hidden errors during refactoring."},{"line_number":15,"context_line":"3. Changing the name of a variable causes a change in the message."},{"line_number":16,"context_line":"4. It creates a lot of otherwise unused variables."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"If you do not follow the project conventions, your code may cause the"},{"line_number":19,"context_line":"LocalizationTestCase.test_multiple_positional_format_placeholders test to fail"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAOn%2F%2FqNo%3D","line":16,"updated":"2013-04-30 07:06:19.000000000","message":"Ahhh, thanks for doing this. It hadn\u0027t occurred to me there might be incorrect docs about this.","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"nova/api/ec2/__init__.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"be97f7f432833965a6b4419e5e54c628e66c3d84","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def ec2_error(req, request_id, code, message):"},{"line_number":80,"context_line":"    \"\"\"Helper to send an ec2_compatible error.\"\"\""},{"line_number":81,"context_line":"    LOG.error(_(\u0027%(code)s: %(message)s\u0027) % dict(code\u003dcode, message\u003dmessage))"},{"line_number":82,"context_line":"    resp \u003d webob.Response()"},{"line_number":83,"context_line":"    resp.status \u003d 400"},{"line_number":84,"context_line":"    resp.headers[\u0027Content-Type\u0027] \u003d \u0027text/xml\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FsNc%3D","line":81,"updated":"2013-04-28 07:34:55.000000000","message":"{} is more efficient that dictNot sure if you guys want to enforce that","commit_id":"253e2c4afe9976d3d35164928f7eea4f5b9b7c5c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d8cc4ed9c23ed5e80d742c9a7d6e082c4a1532ad","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def ec2_error(req, request_id, code, message):"},{"line_number":80,"context_line":"    \"\"\"Helper to send an ec2_compatible error.\"\"\""},{"line_number":81,"context_line":"    LOG.error(_(\u0027%(code)s: %(message)s\u0027) % dict(code\u003dcode, message\u003dmessage))"},{"line_number":82,"context_line":"    resp \u003d webob.Response()"},{"line_number":83,"context_line":"    resp.status \u003d 400"},{"line_number":84,"context_line":"    resp.headers[\u0027Content-Type\u0027] \u003d \u0027text/xml\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FsG4%3D","line":81,"in_reply_to":"AAAAOn%2F%2FsNc%3D","updated":"2013-04-28 19:32:20.000000000","message":"Yes it is, but I think that dict() has much cleaner syntax for me..","commit_id":"253e2c4afe9976d3d35164928f7eea4f5b9b7c5c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                self.mc.set(failures_key, \u00271\u0027, time\u003dCONF.lockout_window * 60)"},{"line_number":182,"context_line":"            elif failures \u003e\u003d CONF.lockout_attempts:"},{"line_number":183,"context_line":"                msg \u003d (_(\u0027Access key %(access_key)s has had %(failures)d\u0027"},{"line_number":184,"context_line":"                        \u0027 failed authentications and will be locked out\u0027"},{"line_number":185,"context_line":"                        \u0027 for %(lock_mins)d minutes.\u0027)"},{"line_number":186,"context_line":"                        % {\u0027access_key\u0027: access_key, \u0027failures\u0027: failures,"},{"line_number":187,"context_line":"                            \u0027lock_mins\u0027: CONF.lockout_minutes})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNk%3D","line":184,"updated":"2013-04-30 07:06:19.000000000","message":"Indent seems off by one for this line and the next two?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9c15414321770dcde56380f8ea79e2f79c09b75d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                self.mc.set(failures_key, \u00271\u0027, time\u003dCONF.lockout_window * 60)"},{"line_number":182,"context_line":"            elif failures \u003e\u003d CONF.lockout_attempts:"},{"line_number":183,"context_line":"                msg \u003d (_(\u0027Access key %(access_key)s has had %(failures)d\u0027"},{"line_number":184,"context_line":"                        \u0027 failed authentications and will be locked out\u0027"},{"line_number":185,"context_line":"                        \u0027 for %(lock_mins)d minutes.\u0027)"},{"line_number":186,"context_line":"                        % {\u0027access_key\u0027: access_key, \u0027failures\u0027: failures,"},{"line_number":187,"context_line":"                            \u0027lock_mins\u0027: CONF.lockout_minutes})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqMY%3D","line":184,"in_reply_to":"AAAAOn%2F%2FqNk%3D","updated":"2013-04-30 07:15:52.000000000","message":"yeah this should be fixed.","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                msg \u003d (_(\u0027Access key %(access_key)s has had %(failures)d\u0027"},{"line_number":184,"context_line":"                        \u0027 failed authentications and will be locked out\u0027"},{"line_number":185,"context_line":"                        \u0027 for %(lock_mins)d minutes.\u0027)"},{"line_number":186,"context_line":"                        % {\u0027access_key\u0027: access_key, \u0027failures\u0027: failures,"},{"line_number":187,"context_line":"                            \u0027lock_mins\u0027: CONF.lockout_minutes})"},{"line_number":188,"context_line":"                LOG.warn(msg)"},{"line_number":189,"context_line":"                self.mc.set(failures_key, str(failures),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNg%3D","line":186,"updated":"2013-04-30 07:06:19.000000000","message":"I personally prefer one value per dict line please.","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9c15414321770dcde56380f8ea79e2f79c09b75d","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                msg \u003d (_(\u0027Access key %(access_key)s has had %(failures)d\u0027"},{"line_number":184,"context_line":"                        \u0027 failed authentications and will be locked out\u0027"},{"line_number":185,"context_line":"                        \u0027 for %(lock_mins)d minutes.\u0027)"},{"line_number":186,"context_line":"                        % {\u0027access_key\u0027: access_key, \u0027failures\u0027: failures,"},{"line_number":187,"context_line":"                            \u0027lock_mins\u0027: CONF.lockout_minutes})"},{"line_number":188,"context_line":"                LOG.warn(msg)"},{"line_number":189,"context_line":"                self.mc.set(failures_key, str(failures),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqMU%3D","line":186,"in_reply_to":"AAAAOn%2F%2FqNg%3D","updated":"2013-04-30 07:15:52.000000000","message":"ok\u003d)","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        LOG.debug(_(\u0027action: %s\u0027), action)"},{"line_number":336,"context_line":"        for key, value in args.items():"},{"line_number":337,"context_line":"            LOG.debug(_(\u0027arg: %(key)s\\t\\tval: %(value)s\u0027)"},{"line_number":338,"context_line":"                        % {\u0027key\u0027: key, \u0027value\u0027: value})"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        # Success!"},{"line_number":341,"context_line":"        api_request \u003d apirequest.APIRequest(self.controller, action,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNc%3D","line":338,"updated":"2013-04-30 07:06:19.000000000","message":"But yet I don\u0027t insist on one value per line for these cases. I think because this is a single line for the dict. I\u0027d be interested in what other reviewers think.","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            msg \u003d _(\u0027Unauthorized request for controller\u003d%(controller)s \u0027"},{"line_number":414,"context_line":"                    \u0027and action\u003d%(action)s\u0027) % {\u0027controller\u0027: controller,"},{"line_number":415,"context_line":"                                                \u0027action\u0027: action}"},{"line_number":416,"context_line":"            LOG.audit(msg, context\u003dcontext)"},{"line_number":417,"context_line":"            raise webob.exc.HTTPUnauthorized()"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _matches_any_role(self, context, roles):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNY%3D","line":416,"updated":"2013-04-30 07:06:19.000000000","message":"Why not remove the msg variable while you\u0027re at it?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9c15414321770dcde56380f8ea79e2f79c09b75d","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            msg \u003d _(\u0027Unauthorized request for controller\u003d%(controller)s \u0027"},{"line_number":414,"context_line":"                    \u0027and action\u003d%(action)s\u0027) % {\u0027controller\u0027: controller,"},{"line_number":415,"context_line":"                                                \u0027action\u0027: action}"},{"line_number":416,"context_line":"            LOG.audit(msg, context\u003dcontext)"},{"line_number":417,"context_line":"            raise webob.exc.HTTPUnauthorized()"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _matches_any_role(self, context, roles):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqME%3D","line":416,"in_reply_to":"AAAAOn%2F%2FqNY%3D","updated":"2013-04-30 07:15:52.000000000","message":"this will look really unreadable if I remove msg variable..","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"nova/api/ec2/apirequest.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            _err \u003d _(\u0027Unsupported API request: controller \u003d %(controller)s, \u0027"},{"line_number":61,"context_line":"                     \u0027action \u003d %(action)s\u0027) % {\u0027controller\u0027: self.controller,"},{"line_number":62,"context_line":"                                               \u0027action\u0027: self.action}"},{"line_number":63,"context_line":"            LOG.exception(_err)"},{"line_number":64,"context_line":"            # TODO(gundlach): Raise custom exception, trap in apiserver,"},{"line_number":65,"context_line":"            #       and reraise as 400 error."},{"line_number":66,"context_line":"            raise exception.InvalidRequest()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNU%3D","line":63,"updated":"2013-04-30 07:06:19.000000000","message":"Why the err variable?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"nova/api/ec2/cloud.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                \" at %(device)s\") % {\u0027volume_id\u0027: volume_id,"},{"line_number":883,"context_line":"                                     \u0027instance_id\u0027: instance_id,"},{"line_number":884,"context_line":"                                     \u0027device\u0027: device}"},{"line_number":885,"context_line":"        LOG.audit(msg, context\u003dcontext)"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"        try:"},{"line_number":888,"context_line":"            self.compute_api.attach_volume(context, instance,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNI%3D","line":885,"updated":"2013-04-30 07:06:19.000000000","message":"Why the variable at all?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":1253,"context_line":"        msg \u003d _(\"Associate address %(public_ip)s to instance \""},{"line_number":1254,"context_line":"                \"%(instance_id)s\") % {\u0027public_ip\u0027: public_ip,"},{"line_number":1255,"context_line":"                                      \u0027instance_id\u0027: instance_id}"},{"line_number":1256,"context_line":"        LOG.audit(msg, context\u003dcontext)"},{"line_number":1257,"context_line":"        instance_uuid \u003d ec2utils.ec2_inst_id_to_uuid(context, instance_id)"},{"line_number":1258,"context_line":"        instance \u003d self.compute_api.get(context, instance_uuid)"},{"line_number":1259,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNE%3D","line":1256,"updated":"2013-04-30 07:06:19.000000000","message":"Why the variable at all?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":1515,"context_line":"        msg \u003d _(\"Registered image %(image_location)s with\""},{"line_number":1516,"context_line":"                \" id %(image_id)s\") % {\u0027image_location\u0027: image_location,"},{"line_number":1517,"context_line":"                                       \u0027image_id\u0027: image_id}"},{"line_number":1518,"context_line":"        LOG.audit(msg, context\u003dcontext)"},{"line_number":1519,"context_line":"        return {\u0027imageId\u0027: image_id}"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def describe_image_attribute(self, context, image_id, attribute, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqNA%3D","line":1518,"updated":"2013-04-30 07:06:19.000000000","message":"Why the variable at all?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"nova/api/metadata/handler.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"09484af4e93288d92c441bb0134cbbbc02654ae7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                msg \u003d _(\u0027X-Instance-ID-Signature: %(signature)s does not \u0027"},{"line_number":170,"context_line":"                        \u0027match the expected value: %(expected_signature)s for \u0027"},{"line_number":171,"context_line":"                        \u0027id: %(instance_id)s.  Request From: \u0027"},{"line_number":172,"context_line":"                        \u0027%(remote_address)s\u0027) % \\"},{"line_number":173,"context_line":"                            {\u0027signature\u0027: signature,"},{"line_number":174,"context_line":"                             \u0027expected_signature\u0027: expected_signature,"},{"line_number":175,"context_line":"                             \u0027instance_id\u0027: instance_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FquQ%3D","line":172,"updated":"2013-04-29 21:13:51.000000000","message":"Any chance you could wrap the whole expression in parentheses to eliminate the backslash?  Alternatively, build the dict into a temporary variable…","commit_id":"2d860650fdb5e2d56d49776e20797f03639a33a3"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                             \u0027expected_signature\u0027: expected_signature,"},{"line_number":175,"context_line":"                             \u0027instance_id\u0027: instance_id,"},{"line_number":176,"context_line":"                             \u0027remote_address\u0027: remote_address})"},{"line_number":177,"context_line":"                LOG.warn(msg)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            msg \u003d _(\u0027Invalid proxy request signature.\u0027)"},{"line_number":180,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqM0%3D","line":177,"updated":"2013-04-30 07:06:19.000000000","message":"Why the variable at all?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"nova/api/openstack/__init__.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                continue"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            LOG.debug(_(\u0027Extension %(ext_name)s extending resource: \u0027"},{"line_number":187,"context_line":"                        \u0027%(collection)s\u0027) % msg_format_dict)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"            resource \u003d self.resources[collection]"},{"line_number":190,"context_line":"            resource.register_actions(controller)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqMw%3D","line":187,"updated":"2013-04-30 07:06:19.000000000","message":"You should pass the dict as an arg instead of substituting here. e.g.:\n\nLOG.debug(_(\u0027foo\u0027), {dictstuff})","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"}],"nova/api/openstack/common.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"67eeae208d8344f8fe29971f8344480835f9b2c8","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                \"task_state\u003d%(task_state)s. Bad upgrade or db \""},{"line_number":116,"context_line":"                \"corrupted?\") % {\u0027vm_state\u0027: vm_state,"},{"line_number":117,"context_line":"                                 \u0027task_state\u0027: task_state}"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"    return status"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FqMs%3D","line":118,"updated":"2013-04-30 07:06:19.000000000","message":"Why the variable?","commit_id":"3db4e44e98e4b93355fde5185a9377ef42427ff4"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"02ee101814f684c12fe95de6a137041d872b3541","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                \"%(state)s\") % {\u0027action\u0027: action, \u0027attr\u0027: attr, \u0027state\u0027: state}"},{"line_number":364,"context_line":"    else:"},{"line_number":365,"context_line":"        # At least give some meaningful message"},{"line_number":366,"context_line":"        msg \u003d _(\u0027Instance is in an invalid state for \\\u0027%s\\\u0027\u0027) % action"},{"line_number":367,"context_line":"    raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2F9OA%3D","line":366,"updated":"2013-05-17 20:01:02.000000000","message":"I\u0027m not sure why you removed the double quotes here, causing you to escape the internal quotes, while leaving double quotes 4 lines up.","commit_id":"6f4969ecb9d0a205190cf5920d11766e591e181d"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4caad30ef10c2c21def79d3d4c50bd42c6b885cd","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                \"%(state)s\") % {\u0027action\u0027: action, \u0027attr\u0027: attr, \u0027state\u0027: state}"},{"line_number":364,"context_line":"    else:"},{"line_number":365,"context_line":"        # At least give some meaningful message"},{"line_number":366,"context_line":"        msg \u003d _(\u0027Instance is in an invalid state for \\\u0027%s\\\u0027\u0027) % action"},{"line_number":367,"context_line":"    raise webob.exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2F9L4%3D","line":366,"in_reply_to":"AAAAPH%2F%2F9OA%3D","updated":"2013-05-17 20:04:57.000000000","message":"fixed","commit_id":"6f4969ecb9d0a205190cf5920d11766e591e181d"}]}
