)]}'
{"novaclient/base.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"62631132ffce2a6861f28a1bd79acb8f763fffeb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":"        if isinstance(resp, list):"},{"line_number":98,"context_line":"            # Add list of request_ids if response is of type list."},{"line_number":99,"context_line":"            [self._append_request_id(resp_obj) for resp_obj in resp]"},{"line_number":100,"context_line":"        elif resp is not None:"},{"line_number":101,"context_line":"            # Add request_ids if response contains single object."},{"line_number":102,"context_line":"            self._append_request_id(resp)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_6e547652","line":99,"updated":"2015-12-18 21:49:49.000000000","message":"Please do this as a loop; I detest using comprehensions for this kind of thing, as it needlessly creates a list, which is then merely discarded.","commit_id":"f0fd707a77aedfc954d2d684b80beb41cf843776"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f9779c485d42cba1443250f44432f80b16a5e4fb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":"        if isinstance(resp, list):"},{"line_number":98,"context_line":"            # Add list of request_ids if response is of type list."},{"line_number":99,"context_line":"            [self._append_request_id(resp_obj) for resp_obj in resp]"},{"line_number":100,"context_line":"        elif resp is not None:"},{"line_number":101,"context_line":"            # Add request_ids if response contains single object."},{"line_number":102,"context_line":"            self._append_request_id(resp)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_2ce09df9","line":99,"in_reply_to":"3a7e1126_6e547652","updated":"2015-12-21 02:35:14.000000000","message":"Done","commit_id":"f0fd707a77aedfc954d2d684b80beb41cf843776"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"62631132ffce2a6861f28a1bd79acb8f763fffeb","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        self._info \u003d info"},{"line_number":136,"context_line":"        self._add_details(info)"},{"line_number":137,"context_line":"        self._loaded \u003d loaded"},{"line_number":138,"context_line":"        self.setup()"},{"line_number":139,"context_line":"        self.append_request_ids(resp)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_eece262d","line":138,"updated":"2015-12-18 21:49:49.000000000","message":"setup() seems a little generic.  Can we make it something like request_ids_setup() to make it a little more clear?","commit_id":"f0fd707a77aedfc954d2d684b80beb41cf843776"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f9779c485d42cba1443250f44432f80b16a5e4fb","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        self._info \u003d info"},{"line_number":136,"context_line":"        self._add_details(info)"},{"line_number":137,"context_line":"        self._loaded \u003d loaded"},{"line_number":138,"context_line":"        self.setup()"},{"line_number":139,"context_line":"        self.append_request_ids(resp)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_ece61514","line":138,"in_reply_to":"3a7e1126_eece262d","updated":"2015-12-21 02:35:14.000000000","message":"Done","commit_id":"f0fd707a77aedfc954d2d684b80beb41cf843776"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5f6dd45a78d126cbacc901177e11b25048f9ea76","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"class TupleWithMeta(tuple, RequestIdMixin):"},{"line_number":514,"context_line":"    def __new__(cls, values, resp):"},{"line_number":515,"context_line":"        return super(TupleWithMeta, cls).__new__(cls, (resp, values))"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def __init__(self, values, resp):"},{"line_number":518,"context_line":"        self.request_ids_setup()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_391adb6f","line":515,"range":{"start_line":515,"start_character":41,"end_line":515,"end_character":48},"updated":"2015-12-29 18:22:44.000000000","message":"I don\u0027t quite understand this.  This would add the resp argument as the first element in the tuple, then the second element would be the original sequence.  Is that your intent?  It doesn\u0027t seem correct to me.\n\n(For reference, here\u0027s what I see when I do something like this:\n\n    \u003e\u003e\u003e class Test(tuple):\n    ...     def __new__(cls, values, resp):\n    ...             return super(Test, cls).__new__(cls, (resp, values))\n    ...     def __init__(self, values, resp):\n    ...             print \"values: %r; resp: %r; self: %r\" % (values, resp, self)\n    ... \n    \u003e\u003e\u003e t \u003d Test([1, 2, 3, 4], \u0027resp\u0027)\n    values: [1, 2, 3, 4]; resp: \u0027resp\u0027; self: (\u0027resp\u0027, [1, 2, 3, 4])\n    \u003e\u003e\u003e t\n    (\u0027resp\u0027, [1, 2, 3, 4])\n    \u003e\u003e\u003e r \u003d tuple([1, 2, 3, 4])\n    \u003e\u003e\u003e r\n    (1, 2, 3, 4)\n\nI think you mean to make this line call __new__() with only the values argument…)","commit_id":"efe00864aaf091d5e4d43fc25379052bdd72a410"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4cd7729f9ea065669029473c53fdbc3237fa2f1e","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"class TupleWithMeta(tuple, RequestIdMixin):"},{"line_number":514,"context_line":"    def __new__(cls, values, resp):"},{"line_number":515,"context_line":"        return super(TupleWithMeta, cls).__new__(cls, (resp, values))"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def __init__(self, values, resp):"},{"line_number":518,"context_line":"        self.request_ids_setup()"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_1d453e16","line":515,"range":{"start_line":515,"start_character":41,"end_line":515,"end_character":48},"in_reply_to":"fa69d971_391adb6f","updated":"2016-01-13 02:30:16.000000000","message":"Done","commit_id":"efe00864aaf091d5e4d43fc25379052bdd72a410"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b06a3940a3dcaecab7a4dfac8304499ceaac8b39","unresolved":false,"context_lines":[{"line_number":369,"context_line":"    def convert_into_with_meta(self, item, resp):"},{"line_number":370,"context_line":"        if isinstance(item, six.string_types):"},{"line_number":371,"context_line":"            return StrWithMeta(item, resp)"},{"line_number":372,"context_line":"        elif isinstance(item, six.binary_type):"},{"line_number":373,"context_line":"            return BytesWithMeta(item, resp)"},{"line_number":374,"context_line":"        elif isinstance(item, list):"},{"line_number":375,"context_line":"            return ListWithMeta(item, resp)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_a1514410","line":372,"range":{"start_line":372,"start_character":8,"end_line":372,"end_character":47},"updated":"2016-01-13 16:54:45.000000000","message":"Hmmm…strings and bytes are not independent, so I want to double-check that you\u0027ve considered the ordering here carefully.  In Python 2.7, \"six.string_types\" is \"(basestring,)\" and \"six.binary_type\" is \"str\", so you\u0027ll never get a BytesWithMeta in Python 2.7.  In Python 3, however, \"six.string_types\" is \"(str,)\" and six.binary_type is \"bytes\", so strings will be StrWithMeta and bytes with be BytesWithMeta.  (Also, in Python 2.7, \"bytes\" is an alias for \"str\".)\n\nI don\u0027t think this makes any difference at all, so no -1, but I wanted to call it out to make sure you\u0027d thought about the implications…","commit_id":"ae929e646e0b6e3b84401620ec546bb13b3f68b4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"653be05e002a35e0f1325d32bbbf620134cee014","unresolved":false,"context_lines":[{"line_number":369,"context_line":"    def convert_into_with_meta(self, item, resp):"},{"line_number":370,"context_line":"        if isinstance(item, six.string_types):"},{"line_number":371,"context_line":"            return StrWithMeta(item, resp)"},{"line_number":372,"context_line":"        elif isinstance(item, six.binary_type):"},{"line_number":373,"context_line":"            return BytesWithMeta(item, resp)"},{"line_number":374,"context_line":"        elif isinstance(item, list):"},{"line_number":375,"context_line":"            return ListWithMeta(item, resp)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_fe000903","line":372,"range":{"start_line":372,"start_character":8,"end_line":372,"end_character":47},"in_reply_to":"da6ed579_a1514410","updated":"2016-01-14 11:56:40.000000000","message":"You are correct.\nI have known it.","commit_id":"ae929e646e0b6e3b84401620ec546bb13b3f68b4"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b06a3940a3dcaecab7a4dfac8304499ceaac8b39","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            return ListWithMeta(item, resp)"},{"line_number":376,"context_line":"        elif isinstance(item, tuple):"},{"line_number":377,"context_line":"            return TupleWithMeta(item, resp)"},{"line_number":378,"context_line":"        elif item is None:"},{"line_number":379,"context_line":"            return TupleWithMeta((), resp)"},{"line_number":380,"context_line":"        else:"},{"line_number":381,"context_line":"            return DictWithMeta(item, resp)"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_21923458","line":379,"range":{"start_line":378,"start_character":0,"end_line":379,"end_character":42},"updated":"2016-01-13 16:54:45.000000000","message":"Hmmm…not sure that this is necessarily how I would envision handling the None case, but extending None is obviously not an option.  Have you looked over the code to verify that everything can handle an empty tuple in place of None appropriately?  But then we also have to consider backwards compatibility…","commit_id":"ae929e646e0b6e3b84401620ec546bb13b3f68b4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4b020aaab982e99b991affd690c1d76beca30b85","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            return ListWithMeta(item, resp)"},{"line_number":376,"context_line":"        elif isinstance(item, tuple):"},{"line_number":377,"context_line":"            return TupleWithMeta(item, resp)"},{"line_number":378,"context_line":"        elif item is None:"},{"line_number":379,"context_line":"            return TupleWithMeta((), resp)"},{"line_number":380,"context_line":"        else:"},{"line_number":381,"context_line":"            return DictWithMeta(item, resp)"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_5693b0a3","line":379,"range":{"start_line":378,"start_character":0,"end_line":379,"end_character":42},"in_reply_to":"da6ed579_21923458","updated":"2016-01-18 06:16:46.000000000","message":"I want to make it be an \u0027exceptional case\u0027.\nAs you said, extending None is obviously not an option.","commit_id":"ae929e646e0b6e3b84401620ec546bb13b3f68b4"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b06a3940a3dcaecab7a4dfac8304499ceaac8b39","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        self.append_request_ids(resp)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class StrWithMeta(str, RequestIdMixin):"},{"line_number":525,"context_line":"    def __new__(cls, value, resp):"},{"line_number":526,"context_line":"        return super(StrWithMeta, cls).__new__(cls, value)"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_a19f04b3","line":524,"updated":"2016-01-13 16:54:45.000000000","message":"Should probably point out that, in Python 2.7, there\u0027s a difference between \u0027str\u0027 and \u0027unicode\u0027, but in Python 3, there\u0027s no \u0027unicode\u0027 type at all…","commit_id":"ae929e646e0b6e3b84401620ec546bb13b3f68b4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"2ba1a64c9809698749a0fa9accee17c28fd6889f","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        self.append_request_ids(resp)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class StrWithMeta(str, RequestIdMixin):"},{"line_number":525,"context_line":"    def __new__(cls, value, resp):"},{"line_number":526,"context_line":"        return super(StrWithMeta, cls).__new__(cls, value)"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_9624c8af","line":524,"in_reply_to":"da6ed579_a19f04b3","updated":"2016-01-18 06:13:26.000000000","message":"For python 2.7, I added a new class for unicode.","commit_id":"ae929e646e0b6e3b84401620ec546bb13b3f68b4"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9551ac53ee7f74afe20b89aee0a087d77d286608","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        self.append_request_ids(resp)"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"class UnicodeWithMeta(six.text_type, RequestIdMixin):"},{"line_number":546,"context_line":"    def __new__(cls, value, resp):"},{"line_number":547,"context_line":"        return super(UnicodeWithMeta, cls).__new__(cls, value)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def __init__(self, values, resp):"},{"line_number":550,"context_line":"        self.request_ids_setup()"},{"line_number":551,"context_line":"        self.append_request_ids(resp)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_524681c0","line":551,"range":{"start_line":545,"start_character":0,"end_line":551,"end_character":37},"updated":"2016-01-18 19:55:29.000000000","message":"Let me suggest wrapping this whole class definition in an \"if six.PY2\".  It *shouldn\u0027t* hurt anything in Python 3, but having it called out explicitly would be good practice for future code management…","commit_id":"5ef4a4f02081662196bfcb5a968691490d57ad10"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"40b082da49088af3c6f613724a4d2feccc850ed1","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        self.append_request_ids(resp)"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"class UnicodeWithMeta(six.text_type, RequestIdMixin):"},{"line_number":546,"context_line":"    def __new__(cls, value, resp):"},{"line_number":547,"context_line":"        return super(UnicodeWithMeta, cls).__new__(cls, value)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def __init__(self, values, resp):"},{"line_number":550,"context_line":"        self.request_ids_setup()"},{"line_number":551,"context_line":"        self.append_request_ids(resp)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_8da045f6","line":551,"range":{"start_line":545,"start_character":0,"end_line":551,"end_character":37},"in_reply_to":"ba63e191_524681c0","updated":"2016-01-19 08:19:15.000000000","message":"Done","commit_id":"5ef4a4f02081662196bfcb5a968691490d57ad10"}],"novaclient/tests/unit/test_base.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5f6dd45a78d126cbacc901177e11b25048f9ea76","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def test_tuple_with_meta(self):"},{"line_number":118,"context_line":"        resp \u003d create_response_obj_with_header()"},{"line_number":119,"context_line":"        obj \u003d base.TupleWithMeta(None, resp)"},{"line_number":120,"context_line":"        self.assertIsInstance(obj, tuple)"},{"line_number":121,"context_line":"        # Check request_ids attribute is added to obj"},{"line_number":122,"context_line":"        self.assertTrue(hasattr(obj, \u0027request_ids\u0027))"},{"line_number":123,"context_line":"        self.assertEqual(fakes.FAKE_REQUEST_ID_LIST, obj.request_ids)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_d9737fb3","line":120,"updated":"2015-12-29 18:22:44.000000000","message":"This isn\u0027t a strong enough test.  You need to not only ensure that it\u0027s compatible with the tuple type, you also need to show that it matches the expected value.","commit_id":"efe00864aaf091d5e4d43fc25379052bdd72a410"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4cd7729f9ea065669029473c53fdbc3237fa2f1e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def test_tuple_with_meta(self):"},{"line_number":118,"context_line":"        resp \u003d create_response_obj_with_header()"},{"line_number":119,"context_line":"        obj \u003d base.TupleWithMeta(None, resp)"},{"line_number":120,"context_line":"        self.assertIsInstance(obj, tuple)"},{"line_number":121,"context_line":"        # Check request_ids attribute is added to obj"},{"line_number":122,"context_line":"        self.assertTrue(hasattr(obj, \u0027request_ids\u0027))"},{"line_number":123,"context_line":"        self.assertEqual(fakes.FAKE_REQUEST_ID_LIST, obj.request_ids)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_7d56bad3","line":120,"in_reply_to":"fa69d971_d9737fb3","updated":"2016-01-13 02:30:16.000000000","message":"Done","commit_id":"efe00864aaf091d5e4d43fc25379052bdd72a410"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9551ac53ee7f74afe20b89aee0a087d77d286608","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        self.assertEqual(fakes.FAKE_REQUEST_ID_LIST, obj.request_ids)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class UnicodeWithMetaTest(utils.TestCase):"},{"line_number":148,"context_line":"    def test_unicode_with_meta(self):"},{"line_number":149,"context_line":"        resp \u003d create_response_obj_with_header()"},{"line_number":150,"context_line":"        obj \u003d base.UnicodeWithMeta(u\u0027test-unicode\u0027, resp)"},{"line_number":151,"context_line":"        self.assertEqual(u\u0027test-unicode\u0027, obj)"},{"line_number":152,"context_line":"        # Check request_ids attribute is added to obj"},{"line_number":153,"context_line":"        self.assertTrue(hasattr(obj, \u0027request_ids\u0027))"},{"line_number":154,"context_line":"        self.assertEqual(fakes.FAKE_REQUEST_ID_LIST, obj.request_ids)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_521d21bc","line":154,"range":{"start_line":147,"start_character":0,"end_line":154,"end_character":69},"updated":"2016-01-18 19:55:29.000000000","message":"Again, something that could be wrapped in \"if six.PY2\"…","commit_id":"5ef4a4f02081662196bfcb5a968691490d57ad10"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"40b082da49088af3c6f613724a4d2feccc850ed1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        self.assertEqual(fakes.FAKE_REQUEST_ID_LIST, obj.request_ids)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class UnicodeWithMetaTest(utils.TestCase):"},{"line_number":148,"context_line":"    def test_unicode_with_meta(self):"},{"line_number":149,"context_line":"        resp \u003d create_response_obj_with_header()"},{"line_number":150,"context_line":"        obj \u003d base.UnicodeWithMeta(u\u0027test-unicode\u0027, resp)"},{"line_number":151,"context_line":"        self.assertEqual(u\u0027test-unicode\u0027, obj)"},{"line_number":152,"context_line":"        # Check request_ids attribute is added to obj"},{"line_number":153,"context_line":"        self.assertTrue(hasattr(obj, \u0027request_ids\u0027))"},{"line_number":154,"context_line":"        self.assertEqual(fakes.FAKE_REQUEST_ID_LIST, obj.request_ids)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_0dad35e9","line":154,"range":{"start_line":147,"start_character":0,"end_line":154,"end_character":69},"in_reply_to":"ba63e191_521d21bc","updated":"2016-01-19 08:19:15.000000000","message":"Done","commit_id":"5ef4a4f02081662196bfcb5a968691490d57ad10"}],"novaclient/tests/unit/v2/fakes.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5f6dd45a78d126cbacc901177e11b25048f9ea76","unresolved":false,"context_lines":[{"line_number":45,"context_line":"FAKE_IMAGE_UUID_2 \u003d \u0027f27f479a-ddda-419a-9bbc-d6b56b210161\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# fake request id"},{"line_number":48,"context_line":"FAKE_REQUEST_ID \u003d fakes.FAKE_REQUEST_ID"},{"line_number":49,"context_line":"FAKE_REQUEST_ID_LIST \u003d fakes.FAKE_REQUEST_ID_LIST"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_f99f63b2","line":48,"updated":"2015-12-29 18:22:44.000000000","message":"Why are these copies needed?","commit_id":"efe00864aaf091d5e4d43fc25379052bdd72a410"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4cd7729f9ea065669029473c53fdbc3237fa2f1e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"FAKE_IMAGE_UUID_2 \u003d \u0027f27f479a-ddda-419a-9bbc-d6b56b210161\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# fake request id"},{"line_number":48,"context_line":"FAKE_REQUEST_ID \u003d fakes.FAKE_REQUEST_ID"},{"line_number":49,"context_line":"FAKE_REQUEST_ID_LIST \u003d fakes.FAKE_REQUEST_ID_LIST"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_bd73d27f","line":48,"in_reply_to":"fa69d971_f99f63b2","updated":"2016-01-13 02:30:16.000000000","message":"The novaclient.tests.unit.v2.fakes.FakeClient is used in novaclient/tests/unit/test_base.py.\nAnd in novaclient/tests/unit/test_base.py, these constants are needed.","commit_id":"efe00864aaf091d5e4d43fc25379052bdd72a410"}]}
