)]}'
{"nova/hacking/checks.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a72273fd7aeb7c4777fe1e00acf1ded9e396ded4","unresolved":false,"context_lines":[{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        Mock(spec\u003dstr)"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    If you really have a kwarg called \u0027spec\u0027 or \u0027spec_set\u0027 that isn\u0027t part of a"},{"line_number":910,"context_line":"    mock definition, you\u0027ll need to work around this hacking rule by e.g. using"},{"line_number":911,"context_line":"    a temporary variable:"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        the_value \u003d \u0027value of a kwarg unfortunately called spec\u0027"},{"line_number":914,"context_line":"        some_thing.assert_called_once_with(spec\u003dthe_value)"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    [1] https://docs.python.org/3/library/unittest.mock.html#the-mock-class"},{"line_number":917,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_3f93b1fc","line":914,"range":{"start_line":909,"start_character":0,"end_line":914,"end_character":58},"updated":"2019-04-26 06:31:19.000000000","message":"This description should be removed.","commit_id":"6e6c0ff1876e20ac7c15b0352f1fe7835a4ad7d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"495cc6fc77044ea789ece33c278de816979166d1","unresolved":false,"context_lines":[{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        Mock(spec\u003dstr)"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    If you really have a kwarg called \u0027spec\u0027 or \u0027spec_set\u0027 that isn\u0027t part of a"},{"line_number":910,"context_line":"    mock definition, you\u0027ll need to work around this hacking rule by e.g. using"},{"line_number":911,"context_line":"    a temporary variable:"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        the_value \u003d \u0027value of a kwarg unfortunately called spec\u0027"},{"line_number":914,"context_line":"        some_thing.assert_called_once_with(spec\u003dthe_value)"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    [1] https://docs.python.org/3/library/unittest.mock.html#the-mock-class"},{"line_number":917,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_a30f83df","line":914,"range":{"start_line":909,"start_character":0,"end_line":914,"end_character":58},"in_reply_to":"ffb9cba7_3f93b1fc","updated":"2019-04-26 14:33:30.000000000","message":"It seems handy to have this here. Why should it be removed?","commit_id":"6e6c0ff1876e20ac7c15b0352f1fe7835a4ad7d4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1fc91d3b6ef9b6bbbae5950384ae8b23fcddae95","unresolved":false,"context_lines":[{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        Mock(spec\u003dstr)"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    If you really have a kwarg called \u0027spec\u0027 or \u0027spec_set\u0027 that isn\u0027t part of a"},{"line_number":910,"context_line":"    mock definition, you\u0027ll need to work around this hacking rule by e.g. using"},{"line_number":911,"context_line":"    a temporary variable:"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        the_value \u003d \u0027value of a kwarg unfortunately called spec\u0027"},{"line_number":914,"context_line":"        some_thing.assert_called_once_with(spec\u003dthe_value)"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    [1] https://docs.python.org/3/library/unittest.mock.html#the-mock-class"},{"line_number":917,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_83203fb2","line":914,"range":{"start_line":909,"start_character":0,"end_line":914,"end_character":58},"in_reply_to":"ffb9cba7_a30f83df","updated":"2019-04-26 15:13:46.000000000","message":"As of the last PS, I added a check for \u0027Mock\u0027 to the regex, so this part isn\u0027t relevant anymore. There\u0027s a pathological corner case if you\u0027re using a class that\u0027s not from the mock library, but whose name happens to end in Mock; but that\u0027s crazy enough to not be worth mentioning.","commit_id":"6e6c0ff1876e20ac7c15b0352f1fe7835a4ad7d4"}],"nova/tests/unit/test_hacking.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f21a652395ae24595ad78b11a9b6d417ac600f78","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                   m \u003d mock.Mock("},{"line_number":903,"context_line":"                       spec\u003d\u0027bar\u0027)"},{"line_number":904,"context_line":"                \"\"\""},{"line_number":905,"context_line":"        errors \u003d [(x+1, 0, \u0027N363\u0027) for x in range(3)]"},{"line_number":906,"context_line":"        self._assert_has_errors("},{"line_number":907,"context_line":"            code1, checks.mock_spec_not_a_string, expected_errors\u003derrors,"},{"line_number":908,"context_line":"            filename\u003d\u0027nova/tests/test_foo.py\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_48600ca6","line":905,"range":{"start_line":905,"start_character":19,"end_line":905,"end_character":22},"updated":"2019-04-08 10:01:19.000000000","message":"Add white spaces around \u0027+\u0027.\n\nx + 1","commit_id":"b53a22a2e921860b3d47c083313f9d740ed1e5e4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a72273fd7aeb7c4777fe1e00acf1ded9e396ded4","unresolved":false,"context_lines":[{"line_number":900,"context_line":"                   m \u003d mock.Mock(spec\u003d\u0027foo\u0027)"},{"line_number":901,"context_line":"                   m \u003d mock.MagicMock(spec_set\u003d\u0027nova.objects.Instance\u0027)"},{"line_number":902,"context_line":"                   m \u003d mock.NonCallableMock("},{"line_number":903,"context_line":"                       spec\u003d\u0027bar\u0027)"},{"line_number":904,"context_line":"                \"\"\""},{"line_number":905,"context_line":"        errors \u003d [(x + 1, 0, \u0027N363\u0027) for x in range(3)]"},{"line_number":906,"context_line":"        self._assert_has_errors("}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_7f77e9d5","line":903,"updated":"2019-04-26 06:31:19.000000000","message":"nit: Missing test case.\n\nmock.Mock(spec\u003d\"foo\")","commit_id":"6e6c0ff1876e20ac7c15b0352f1fe7835a4ad7d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"495cc6fc77044ea789ece33c278de816979166d1","unresolved":false,"context_lines":[{"line_number":900,"context_line":"                   m \u003d mock.Mock(spec\u003d\u0027foo\u0027)"},{"line_number":901,"context_line":"                   m \u003d mock.MagicMock(spec_set\u003d\u0027nova.objects.Instance\u0027)"},{"line_number":902,"context_line":"                   m \u003d mock.NonCallableMock("},{"line_number":903,"context_line":"                       spec\u003d\u0027bar\u0027)"},{"line_number":904,"context_line":"                \"\"\""},{"line_number":905,"context_line":"        errors \u003d [(x + 1, 0, \u0027N363\u0027) for x in range(3)]"},{"line_number":906,"context_line":"        self._assert_has_errors("}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_e3057bc3","line":903,"in_reply_to":"ffb9cba7_7f77e9d5","updated":"2019-04-26 14:33:30.000000000","message":"+1","commit_id":"6e6c0ff1876e20ac7c15b0352f1fe7835a4ad7d4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1fc91d3b6ef9b6bbbae5950384ae8b23fcddae95","unresolved":false,"context_lines":[{"line_number":900,"context_line":"                   m \u003d mock.Mock(spec\u003d\u0027foo\u0027)"},{"line_number":901,"context_line":"                   m \u003d mock.MagicMock(spec_set\u003d\u0027nova.objects.Instance\u0027)"},{"line_number":902,"context_line":"                   m \u003d mock.NonCallableMock("},{"line_number":903,"context_line":"                       spec\u003d\u0027bar\u0027)"},{"line_number":904,"context_line":"                \"\"\""},{"line_number":905,"context_line":"        errors \u003d [(x + 1, 0, \u0027N363\u0027) for x in range(3)]"},{"line_number":906,"context_line":"        self._assert_has_errors("}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_2308732a","line":903,"in_reply_to":"ffb9cba7_e3057bc3","updated":"2019-04-26 15:13:46.000000000","message":"Done","commit_id":"6e6c0ff1876e20ac7c15b0352f1fe7835a4ad7d4"}]}
