)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"25d78c44a7ed55a2e88b8cd6b65c403dcaf391de","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Additional cleanup:"},{"line_number":14,"context_line":"* Used list comprehension instead of for loop to reduce loop"},{"line_number":15,"context_line":"  overhead in nova.scheduler.filters.utils"},{"line_number":16,"context_line":"* Control flow cleanup in nova.scheduler.filters.utils"},{"line_number":17,"context_line":"* Removed superfluous directory [nova/tests/unit/functional]"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3afb71cf_499b8c66","line":15,"updated":"2015-06-10 19:48:34.000000000","message":"This should really be a separate patch, as it\u0027s not related to cleaning up the files.","commit_id":"1117e8589d5f17ae5264c17d51440aec5acbb041"}],"nova/scheduler/filters/utils.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"25d78c44a7ed55a2e88b8cd6b65c403dcaf391de","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    metadata \u003d collections.defaultdict(set)"},{"line_number":43,"context_line":"    for aggr in aggrlist:"},{"line_number":44,"context_line":"        if key is None or key in aggr.metadata:"},{"line_number":45,"context_line":"            for k, v in six.iteritems(aggr.metadata):"},{"line_number":46,"context_line":"                metadata[k].update(re.split(r\u0027\\s*,\\s*\u0027, v))"},{"line_number":47,"context_line":"    return metadata"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_44281133","line":45,"updated":"2015-06-10 19:48:34.000000000","message":"It is cleaner to simply use six.items(). See discussion: http://lists.openstack.org/pipermail/openstack-dev/2015-June/066391.html","commit_id":"1117e8589d5f17ae5264c17d51440aec5acbb041"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"25d78c44a7ed55a2e88b8cd6b65c403dcaf391de","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    for aggr in aggrlist:"},{"line_number":44,"context_line":"        if key is None or key in aggr.metadata:"},{"line_number":45,"context_line":"            for k, v in six.iteritems(aggr.metadata):"},{"line_number":46,"context_line":"                metadata[k].update(re.split(r\u0027\\s*,\\s*\u0027, v))"},{"line_number":47,"context_line":"    return metadata"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_041fb908","line":46,"updated":"2015-06-10 19:48:34.000000000","message":"It would be more efficient to compile the regex once at the top of the file, and then call .split() on the compiled expression.","commit_id":"1117e8589d5f17ae5264c17d51440aec5acbb041"}]}
