)]}'
{"smaug/services/protection/graph.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"c7ad8e435778b8f1c2467bed3be10ebd861fd2db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from collections import namedtuple"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"from oslo_log import log as logging"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_00f8bbe4","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":4},"updated":"2016-02-14 14:04:19.000000000","message":"You are missing the licensing header","commit_id":"f435def7ddbe15941f40622088af576091c5b8b0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3eec306d52762f4ce3e9735ceaf95980509e9623","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FoundLoopError(RuntimeError):"},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        super(FoundLoopError, self).__init__(\"A loop was found in the graph\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _build_graph_rec(context, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_e325e1ae","line":34,"updated":"2016-02-14 15:34:59.000000000","message":"Should we start using _() translation markers now? Or wait until translation is actually enabled for the project?","commit_id":"66de08b4c7fdef0e54ae61ec78aabcc96f386a59"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"865b2a6f296bd903b94354e363b2c6cc62df0373","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FoundLoopError(RuntimeError):"},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        super(FoundLoopError, self).__init__(\"A loop was found in the graph\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _build_graph_rec(context, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_7c99546e","line":34,"in_reply_to":"dae33548_6c825002","updated":"2016-02-15 14:44:02.000000000","message":"Done","commit_id":"66de08b4c7fdef0e54ae61ec78aabcc96f386a59"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"865b2a6f296bd903b94354e363b2c6cc62df0373","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FoundLoopError(RuntimeError):"},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        super(FoundLoopError, self).__init__(\"A loop was found in the graph\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _build_graph_rec(context, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_3c8fcc24","line":34,"in_reply_to":"dae33548_e325e1ae","updated":"2016-02-15 14:44:02.000000000","message":"Done","commit_id":"66de08b4c7fdef0e54ae61ec78aabcc96f386a59"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"175a64d7746888fb2d6b55b990809acdab5f0be7","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FoundLoopError(RuntimeError):"},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        super(FoundLoopError, self).__init__(\"A loop was found in the graph\")"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _build_graph_rec(context, node):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_6c825002","line":34,"in_reply_to":"dae33548_e325e1ae","updated":"2016-02-15 13:09:14.000000000","message":"We actually already using the oslo.i18n in the project \n\n@saggi please add \nfrom smaug.i18n import _","commit_id":"66de08b4c7fdef0e54ae61ec78aabcc96f386a59"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"dc4955bc51479ed45daa6aad13cbaa780f599926","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"_GraphBuilderContext \u003d namedtuple(\"_GraphBuilderContext\", ("},{"line_number":19,"context_line":"    \"source_set\","},{"line_number":20,"context_line":"    \"encounterd_set\","},{"line_number":21,"context_line":"    \"finished_nodes\","},{"line_number":22,"context_line":"    \"get_child_nodes\","},{"line_number":23,"context_line":"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_8e031f42","line":20,"range":{"start_line":20,"start_character":5,"end_line":20,"end_character":15},"updated":"2016-02-16 07:20:56.000000000","message":"encountered","commit_id":"94a5581983fd110b9b9ebfc450de190ab326a683"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"95a632f78c28231024e9afba268c6b4ffa9bc57c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class FoundLoopError(RuntimeError):"},{"line_number":34,"context_line":"    def __init__(self):"},{"line_number":35,"context_line":"        super(FoundLoopError, self).__init__("},{"line_number":36,"context_line":"            _(\"A loop was found in the graph\"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_c1a73509","line":33,"range":{"start_line":33,"start_character":6,"end_line":33,"end_character":20},"updated":"2016-02-18 07:33:27.000000000","message":"It is better to move this exception class to module exception.py.  All the defined exception class are in this module.","commit_id":"94a5581983fd110b9b9ebfc450de190ab326a683"}],"smaug/tests/unit/protection/test_graph.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"c7ad8e435778b8f1c2467bed3be10ebd861fd2db","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                \"A\": [\"B\"],"},{"line_number":25,"context_line":"                \"B\": [\"C\"],"},{"line_number":26,"context_line":"                \"C\": [],"},{"line_number":27,"context_line":"                }, {\"A\"}),"},{"line_number":28,"context_line":"            ({"},{"line_number":29,"context_line":"                \"A\": [],"},{"line_number":30,"context_line":"                \"B\": [\"C\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_a0e74f3f","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":25},"updated":"2016-02-14 14:04:19.000000000","message":"This not supposed to be \n\nA, B,C","commit_id":"f435def7ddbe15941f40622088af576091c5b8b0"}]}
