)]}'
{"nova/policies/base.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7a331a93e27815cdb7864f933e1bddb558e0dbb2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if output:"},{"line_number":45,"context_line":"            yield \u0027 \u0027.join(output)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return \u0027\\n\\n\u0027.join([\u0027\\n\u0027.join(textwrap.wrap(x, 72))"},{"line_number":48,"context_line":"                        for x in _split_paragraphs(text)])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_bbcd7967","line":47,"range":{"start_line":47,"start_character":34,"end_line":47,"end_character":54},"updated":"2017-04-27 09:54:34.000000000","message":"I think oslo.policy will already do this bit for us, so we can skip it, but its fine I think.","commit_id":"97e494009808e596071369278b1b0abf62b5f37d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9dd0c45db491c1e537fb0d772fdca24bfcfd74db","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if output:"},{"line_number":45,"context_line":"            yield \u0027 \u0027.join(output)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return \u0027\\n\\n\u0027.join([\u0027\\n\u0027.join(textwrap.wrap(x, 72))"},{"line_number":48,"context_line":"                        for x in _split_paragraphs(text)])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_9b54fd54","line":47,"range":{"start_line":47,"start_character":51,"end_line":47,"end_character":53},"updated":"2017-04-27 09:58:06.000000000","message":"So I think this needs to be 70, see:\nhttps://github.com/openstack/oslo.policy/blob/master/oslo_policy/generator.py#L95","commit_id":"97e494009808e596071369278b1b0abf62b5f37d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7a331a93e27815cdb7864f933e1bddb558e0dbb2","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":52,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault when"},{"line_number":53,"context_line":"    # oslo.policy library is bumped to 1.21.0. The formatted_description hack"},{"line_number":54,"context_line":"    # can be removed then."},{"line_number":55,"context_line":"    ops \u003d \"\""},{"line_number":56,"context_line":"    for operation in operations:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_5bd555e4","line":53,"updated":"2017-04-27 09:54:34.000000000","message":"So I thought we had already deleted this code, hence my patch.","commit_id":"97e494009808e596071369278b1b0abf62b5f37d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ca956f5af62b701d329476f6fc0651eb51737fe1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            ops +\u003d (\u0027%(method)s %(path)s\\n\u0027 %"},{"line_number":58,"context_line":"                     {\u0027method\u0027: operation[\u0027method\u0027],"},{"line_number":59,"context_line":"                      \u0027path\u0027: operation[\u0027path\u0027]})"},{"line_number":60,"context_line":"    template \u003d \"\"\"%(description)s\\n\\n%(operations)s\"\"\""},{"line_number":61,"context_line":"    formatted_description \u003d template % {"},{"line_number":62,"context_line":"        \"description\": _wrap_text(description),"},{"line_number":63,"context_line":"        \"operations\": ops,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_de595335","line":60,"range":{"start_line":60,"start_character":35,"end_line":60,"end_character":37},"updated":"2017-04-27 10:05:48.000000000","message":"That was left out before on purpose, but I could go either way.","commit_id":"97e494009808e596071369278b1b0abf62b5f37d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"acdac6912c1cfa6a65e6d69da3e1c10bb37a3573","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import textwrap"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_policy import policy"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_62cde264","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":15},"updated":"2017-04-28 03:01:14.000000000","message":"It is unnecessary.","commit_id":"698d087700109c2ec7f94a78d52914ff479d1ca4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"acdac6912c1cfa6a65e6d69da3e1c10bb37a3573","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            if line:"},{"line_number":39,"context_line":"                output.append(line.strip())"},{"line_number":40,"context_line":"            else:"},{"line_number":41,"context_line":"                yield \u0027 \u0027.join(output)"},{"line_number":42,"context_line":"                output \u003d []"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        if output:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_255244df","line":41,"range":{"start_line":41,"start_character":16,"end_line":41,"end_character":38},"updated":"2017-04-28 03:01:14.000000000","message":"It should be as follows:\n\n    if output:\n        yield \u0027 \u0027.join(output)","commit_id":"698d087700109c2ec7f94a78d52914ff479d1ca4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a9250d22f24a4fdb1dbb9c1e32a235607479c115","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            if line:"},{"line_number":39,"context_line":"                output.append(line.strip())"},{"line_number":40,"context_line":"            else:"},{"line_number":41,"context_line":"                yield \u0027 \u0027.join(output)"},{"line_number":42,"context_line":"                output \u003d []"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        if output:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_92d95358","line":41,"range":{"start_line":41,"start_character":16,"end_line":41,"end_character":38},"in_reply_to":"5ff73747_255244df","updated":"2017-04-28 11:26:26.000000000","message":"Should it? We probably want to yield empty lines.","commit_id":"698d087700109c2ec7f94a78d52914ff479d1ca4"}]}
