)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"5bc3285ce3d2e1404d3025bdf0bae58998eade7e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"other in the lookup."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I47e1c6bd765316de17e1227751d2515cb2599e52"},{"line_number":15,"context_line":"Partially-Implements: bp refactor-nb-api"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_eb614e3a","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":40},"updated":"2017-03-22 09:52:38.000000000","message":"maybe worth to start opening bugs for the already merged issues","commit_id":"0ac8c70c75980b032f4fbfbb6ca5649a32e0ae6a"}],"dragonflow/tests/common/utils.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"da1afefa11986c4bed186153ed98be23a84b09a2","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"@contextlib.contextmanager"},{"line_number":183,"context_line":"def monkeypatch(obj, member, sub):"},{"line_number":184,"context_line":"    orig \u003d getattr(obj, member)"},{"line_number":185,"context_line":"    setattr(obj, member, sub)"},{"line_number":186,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_d657e957","line":183,"updated":"2017-03-21 23:09:53.000000000","message":"I think this requires a docstring","commit_id":"e25eea1508ef08775d076e8c9cfdd20c3e79d3d6"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"e51d59c039c6c7a2191113b3947d0a5d8de13bef","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"@contextlib.contextmanager"},{"line_number":183,"context_line":"def monkeypatch(obj, member, sub):"},{"line_number":184,"context_line":"    orig \u003d getattr(obj, member)"},{"line_number":185,"context_line":"    setattr(obj, member, sub)"},{"line_number":186,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_f5d12d58","line":183,"in_reply_to":"1a1ced50_d657e957","updated":"2017-03-22 09:23:18.000000000","message":"Will add.","commit_id":"e25eea1508ef08775d076e8c9cfdd20c3e79d3d6"}],"dragonflow/tests/unit/test_model_framework.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"da1afefa11986c4bed186153ed98be23a84b09a2","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        )"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_loop_detection(self):"},{"line_number":315,"context_line":"        with clean_registry():"},{"line_number":316,"context_line":"            @mf.register_model"},{"line_number":317,"context_line":"            @mf.construct_nb_db_model"},{"line_number":318,"context_line":"            class LoopModel1(mf.ModelBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_b6cd0d33","line":315,"range":{"start_line":315,"start_character":13,"end_line":315,"end_character":27},"updated":"2017-03-21 23:09:53.000000000","message":"Can\u0027t we just use mock.patch? (here, or in clean_registry, or in utils.monkeypatch)?","commit_id":"e25eea1508ef08775d076e8c9cfdd20c3e79d3d6"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"04adb05ad99f57b88c2cef3df61725f1148bf4e7","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        )"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_loop_detection(self):"},{"line_number":315,"context_line":"        with clean_registry():"},{"line_number":316,"context_line":"            @mf.register_model"},{"line_number":317,"context_line":"            @mf.construct_nb_db_model"},{"line_number":318,"context_line":"            class LoopModel1(mf.ModelBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_c8e01899","line":315,"in_reply_to":"1a1ced50_95dc7974","updated":"2017-03-22 09:31:09.000000000","message":"If I recall correctly, mock.patch and mock.patch.object let you set the new object","commit_id":"e25eea1508ef08775d076e8c9cfdd20c3e79d3d6"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"e51d59c039c6c7a2191113b3947d0a5d8de13bef","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        )"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_loop_detection(self):"},{"line_number":315,"context_line":"        with clean_registry():"},{"line_number":316,"context_line":"            @mf.register_model"},{"line_number":317,"context_line":"            @mf.construct_nb_db_model"},{"line_number":318,"context_line":"            class LoopModel1(mf.ModelBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_95dc7974","line":315,"range":{"start_line":315,"start_character":13,"end_line":315,"end_character":27},"in_reply_to":"1a1ced50_b6cd0d33","updated":"2017-03-22 09:23:18.000000000","message":"We have to replace dictionaries rather than functions on the target, and mock will give us callables. I did not find a simpler way to do it with mock.","commit_id":"e25eea1508ef08775d076e8c9cfdd20c3e79d3d6"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5239294749af394146ee6b5e87d263ba87165949","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        )"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def test_loop_detection(self):"},{"line_number":314,"context_line":"        with clean_registry():"},{"line_number":315,"context_line":"            @mf.register_model"},{"line_number":316,"context_line":"            @mf.construct_nb_db_model"},{"line_number":317,"context_line":"            class LoopModel1(mf.ModelBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_7ccc2bbb","line":314,"updated":"2017-03-22 18:36:20.000000000","message":"I think this is needed on test_topological_sort too","commit_id":"4c581c8c54395d397bae0b88edf77d5e8d01ee4c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"f6bdca787cc2528f43edda4eca1bbf7938c35386","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        )"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def test_loop_detection(self):"},{"line_number":314,"context_line":"        with clean_registry():"},{"line_number":315,"context_line":"            @mf.register_model"},{"line_number":316,"context_line":"            @mf.construct_nb_db_model"},{"line_number":317,"context_line":"            class LoopModel1(mf.ModelBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_2baa5885","line":314,"in_reply_to":"1a1ced50_7ccc2bbb","updated":"2017-03-23 06:50:59.000000000","message":"But we\u0027re not creating the models in the tests, so I am not sure it makes a lot of sense.","commit_id":"4c581c8c54395d397bae0b88edf77d5e8d01ee4c"}]}
