)]}'
{"novaclient/client.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"30075250abf86df4284d9eff794898f78e3de597","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        return resp, body"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def _time_request(self, url, method, **kwargs):"},{"line_number":397,"context_line":"        with utils.converted_exceptions(), utils.record_time(self.times,"},{"line_number":398,"context_line":"                                                             self.timings,"},{"line_number":399,"context_line":"                                                             method, url):"},{"line_number":400,"context_line":"            resp, body \u003d self.request(url, method, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_33b25b07","line":397,"updated":"2015-10-15 20:18:41.000000000","message":"We have to support Python 2.6, which unfortunately doesn\u0027t allow multiple context manager expressions.  This will need to use something like contextlib.nested()…which in turn is deprecated in Python 2.7 and may even be gone in Python 3, which we also need to support.","commit_id":"7a0f5e4d9bb6661c0665877bcf088d738ce695cb"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a8c4dc8a66952d7fb929347c1f82c8f13049cdc9","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        return resp, body"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def _time_request(self, url, method, **kwargs):"},{"line_number":397,"context_line":"        with utils.converted_exceptions(), utils.record_time(self.times,"},{"line_number":398,"context_line":"                                                             self.timings,"},{"line_number":399,"context_line":"                                                             method, url):"},{"line_number":400,"context_line":"            resp, body \u003d self.request(url, method, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_13b07f89","line":397,"in_reply_to":"5a2ca52d_33b25b07","updated":"2015-10-15 20:32:27.000000000","message":"Done","commit_id":"7a0f5e4d9bb6661c0665877bcf088d738ce695cb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # NOTE(jamielennox): The standard call raises errors from"},{"line_number":85,"context_line":"        # keystoneclient, where we need to raise the novaclient errors."},{"line_number":86,"context_line":"        raise_exc \u003d kwargs.pop(\u0027raise_exc\u0027, True)"},{"line_number":87,"context_line":"        with utils.record_time(self.times, self.timings, method, url):"},{"line_number":88,"context_line":"            resp, body \u003d super(SessionClient, self).request(url,"},{"line_number":89,"context_line":"                                                            method,"},{"line_number":90,"context_line":"                                                            raise_exc\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_a1410bab","line":87,"updated":"2015-10-21 21:39:31.000000000","message":"I think you need to add the context manager here to convert exceptions that may come out of the SessionClient","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # NOTE(jamielennox): The standard call raises errors from"},{"line_number":85,"context_line":"        # keystoneclient, where we need to raise the novaclient errors."},{"line_number":86,"context_line":"        raise_exc \u003d kwargs.pop(\u0027raise_exc\u0027, True)"},{"line_number":87,"context_line":"        with utils.record_time(self.times, self.timings, method, url):"},{"line_number":88,"context_line":"            resp, body \u003d super(SessionClient, self).request(url,"},{"line_number":89,"context_line":"                                                            method,"},{"line_number":90,"context_line":"                                                            raise_exc\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_99521b34","line":87,"in_reply_to":"3a29b11f_a1410bab","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        return resp, body"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def _time_request(self, url, method, **kwargs):"},{"line_number":397,"context_line":"        with utils.converted_exceptions():"},{"line_number":398,"context_line":"            with utils.record_time(self.times, self.timings, method, url):"},{"line_number":399,"context_line":"                resp, body \u003d self.request(url, method, **kwargs)"},{"line_number":400,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_81b96f17","line":397,"updated":"2015-10-21 21:39:31.000000000","message":"You don\u0027t need this line because it\u0027s calling self.request which has the exception conversion in it at L363","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        return resp, body"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def _time_request(self, url, method, **kwargs):"},{"line_number":397,"context_line":"        with utils.converted_exceptions():"},{"line_number":398,"context_line":"            with utils.record_time(self.times, self.timings, method, url):"},{"line_number":399,"context_line":"                resp, body \u003d self.request(url, method, **kwargs)"},{"line_number":400,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_d95c134d","line":397,"in_reply_to":"3a29b11f_81b96f17","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            if self.projectid:"},{"line_number":424,"context_line":"                kwargs[\u0027headers\u0027][\u0027X-Auth-Project-Id\u0027] \u003d self.projectid"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"            with utils.converted_exceptions():"},{"line_number":427,"context_line":"                resp, body \u003d self._time_request(url, method, **kwargs)"},{"line_number":428,"context_line":"            return resp, body"},{"line_number":429,"context_line":"        except exceptions.Unauthorized as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_81508fd5","line":426,"updated":"2015-10-21 21:39:31.000000000","message":"You don\u0027t need this line, see above","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            if self.projectid:"},{"line_number":424,"context_line":"                kwargs[\u0027headers\u0027][\u0027X-Auth-Project-Id\u0027] \u003d self.projectid"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"            with utils.converted_exceptions():"},{"line_number":427,"context_line":"                resp, body \u003d self._time_request(url, method, **kwargs)"},{"line_number":428,"context_line":"            return resp, body"},{"line_number":429,"context_line":"        except exceptions.Unauthorized as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_7957ff25","line":426,"in_reply_to":"3a29b11f_81508fd5","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"}],"novaclient/exceptions.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e60b330fe019576e919f7191a8fb32108d268d69","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    pass"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class RequestTimeout(Exception):"},{"line_number":289,"context_line":"    \"\"\"The request timed out.\"\"\""},{"line_number":290,"context_line":"    pass"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_9239d6d9","line":288,"updated":"2015-10-16 07:57:45.000000000","message":"Imo, it would be much better, if these new exceptions will be subclasses of ClientException  and have http_statuses( for example request timeout \u003d\u003d 408)","commit_id":"23cb0b9d3854f1d197a7f304e8e86f42be42c0cd"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"b076075d4b381f296110ae96e529466f82d15dc5","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    pass"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class RequestTimeout(Exception):"},{"line_number":289,"context_line":"    \"\"\"The request timed out.\"\"\""},{"line_number":290,"context_line":"    pass"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_cb76a7d6","line":288,"in_reply_to":"5a2ca52d_9239d6d9","updated":"2015-10-16 14:24:32.000000000","message":"Done.  The other two are not client errors.","commit_id":"23cb0b9d3854f1d197a7f304e8e86f42be42c0cd"}],"novaclient/tests/unit/test_client.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f128e190bceca6d4c27fbf910722a36774afbcc5","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        self.assertEqual(\u0027GET http://no.where\u0027, client.times[0][0])"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @mock.patch.object(requests, \u0027request\u0027)"},{"line_number":443,"context_line":"    def test_HTTPClient_request_exception_conversions(self, m_request):"},{"line_number":444,"context_line":"        client \u003d novaclient.client.HTTPClient(user\u003d\u0027zqfan\u0027, password\u003d\u0027\u0027)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        exc \u003d requests.HTTPError()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_217bbbf6","line":443,"updated":"2015-10-21 21:40:39.000000000","message":"You will need another test for the SessionClient","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        self.assertEqual(\u0027GET http://no.where\u0027, client.times[0][0])"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    @mock.patch.object(requests, \u0027request\u0027)"},{"line_number":443,"context_line":"    def test_HTTPClient_request_exception_conversions(self, m_request):"},{"line_number":444,"context_line":"        client \u003d novaclient.client.HTTPClient(user\u003d\u0027zqfan\u0027, password\u003d\u0027\u0027)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        exc \u003d requests.HTTPError()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_44501a0b","line":443,"in_reply_to":"3a29b11f_217bbbf6","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        self.assertRaises(novaclient.exceptions.TooManyRedirects,"},{"line_number":465,"context_line":"                          client.request, \"http://www.openstack.org\", \u0027GET\u0027)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    @mock.patch.object(requests, \u0027request\u0027)"},{"line_number":468,"context_line":"    def test_time_request_exception_conversions(self, m_request):"},{"line_number":469,"context_line":"        client \u003d novaclient.client.HTTPClient(user\u003d\u0027zqfan\u0027, password\u003d\u0027\u0027)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        exc \u003d requests.HTTPError()"},{"line_number":472,"context_line":"        exc.response \u003d requests.Response()"},{"line_number":473,"context_line":"        exc.response.status_code \u003d 12345"},{"line_number":474,"context_line":"        m_request.side_effect \u003d exc"},{"line_number":475,"context_line":"        exc \u003d self.assertRaises(novaclient.exceptions.ClientException,"},{"line_number":476,"context_line":"                                client._time_request,"},{"line_number":477,"context_line":"                                \"http://www.openstack.org\", \u0027GET\u0027)"},{"line_number":478,"context_line":"        self.assertIn(\"HTTP 12345\", six.text_type(exc))"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"        m_request.side_effect \u003d requests.ConnectionError()"},{"line_number":481,"context_line":"        self.assertRaises(novaclient.exceptions.ConnectionError,"},{"line_number":482,"context_line":"                          client._time_request, \"http://www.openstack.org\","},{"line_number":483,"context_line":"                          \u0027GET\u0027)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        m_request.side_effect \u003d requests.Timeout()"},{"line_number":486,"context_line":"        self.assertRaises(novaclient.exceptions.RequestTimeout,"},{"line_number":487,"context_line":"                          client._time_request, \"http://www.openstack.org\","},{"line_number":488,"context_line":"                          \u0027GET\u0027)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        m_request.side_effect \u003d requests.TooManyRedirects()"},{"line_number":491,"context_line":"        self.assertRaises(novaclient.exceptions.TooManyRedirects,"},{"line_number":492,"context_line":"                          client._time_request, \"http://www.openstack.org\","},{"line_number":493,"context_line":"                          \u0027GET\u0027)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    @mock.patch.object(requests, \u0027request\u0027)"},{"line_number":496,"context_line":"    def test_cs_request_exception_conversions(self, m_request):"},{"line_number":497,"context_line":"        client \u003d novaclient.client.HTTPClient(user\u003d\u0027zqfan\u0027, password\u003d\u0027\u0027,"},{"line_number":498,"context_line":"                                              auth_url\u003d\u0027foo/v2\u0027)"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        exc \u003d requests.HTTPError()"},{"line_number":501,"context_line":"        exc.response \u003d requests.Response()"},{"line_number":502,"context_line":"        exc.response.status_code \u003d 12345"},{"line_number":503,"context_line":"        m_request.side_effect \u003d exc"},{"line_number":504,"context_line":"        exc \u003d self.assertRaises(novaclient.exceptions.ClientException,"},{"line_number":505,"context_line":"                                client._cs_request,"},{"line_number":506,"context_line":"                                \"http://www.openstack.org\", \u0027GET\u0027)"},{"line_number":507,"context_line":"        self.assertIn(\"HTTP 12345\", six.text_type(exc))"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        m_request.side_effect \u003d requests.ConnectionError()"},{"line_number":510,"context_line":"        self.assertRaises(novaclient.exceptions.ConnectionError,"},{"line_number":511,"context_line":"                          client._cs_request, \"http://www.openstack.org\","},{"line_number":512,"context_line":"                          \u0027GET\u0027)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        m_request.side_effect \u003d requests.Timeout()"},{"line_number":515,"context_line":"        self.assertRaises(novaclient.exceptions.RequestTimeout,"},{"line_number":516,"context_line":"                          client._cs_request, \"http://www.openstack.org\","},{"line_number":517,"context_line":"                          \u0027GET\u0027)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        m_request.side_effect \u003d requests.TooManyRedirects()"},{"line_number":520,"context_line":"        self.assertRaises(novaclient.exceptions.TooManyRedirects,"},{"line_number":521,"context_line":"                          client._cs_request, \"http://www.openstack.org\","},{"line_number":522,"context_line":"                          \u0027GET\u0027)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"class SessionClientTest(utils.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_e17f0315","line":522,"range":{"start_line":467,"start_character":0,"end_line":522,"end_character":32},"updated":"2015-10-21 21:39:31.000000000","message":"Since you can remove two of the lines of the conversion context manager, I think you don\u0027t need these last two tests","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        m_request.side_effect \u003d requests.TooManyRedirects()"},{"line_number":520,"context_line":"        self.assertRaises(novaclient.exceptions.TooManyRedirects,"},{"line_number":521,"context_line":"                          client._cs_request, \"http://www.openstack.org\","},{"line_number":522,"context_line":"                          \u0027GET\u0027)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"class SessionClientTest(utils.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_a42ece89","line":522,"in_reply_to":"3a29b11f_e17f0315","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"}],"novaclient/utils.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import contextlib"},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import re"},{"line_number":17,"context_line":"import requests"},{"line_number":18,"context_line":"import textwrap"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_c29fde4e","line":17,"updated":"2015-10-21 21:39:31.000000000","message":"Sorry to be pedantic but, this is a third-party lib and should be imported with the third-party imports according to the openstack hacking guidelines [1].\n\nI think it\u0027s helpful in being able to quickly see at a glance, what outside dependencies a module has.\n\n[1] http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import contextlib"},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import re"},{"line_number":17,"context_line":"import requests"},{"line_number":18,"context_line":"import textwrap"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_24595e35","line":17,"in_reply_to":"3a29b11f_c29fde4e","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_serialization import jsonutils"},{"line_number":23,"context_line":"from oslo_utils import encodeutils"},{"line_number":24,"context_line":"import pkg_resources"},{"line_number":25,"context_line":"import prettytable"},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from novaclient import exceptions"},{"line_number":29,"context_line":"from novaclient.i18n import _"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_c2cd9e5e","line":26,"range":{"start_line":22,"start_character":0,"end_line":26,"end_character":10},"updated":"2015-10-21 21:39:31.000000000","message":"These are the third-party imports","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_utils import encodeutils"},{"line_number":24,"context_line":"import pkg_resources"},{"line_number":25,"context_line":"import prettytable"},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from novaclient import exceptions"},{"line_number":29,"context_line":"from novaclient.i18n import _"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_e43fe6b1","line":26,"in_reply_to":"3a29b11f_c2cd9e5e","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"@contextlib.contextmanager"},{"line_number":381,"context_line":"def converted_exceptions():"},{"line_number":382,"context_line":"    try:"},{"line_number":383,"context_line":"        yield"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_81188f76","line":381,"updated":"2015-10-21 21:39:31.000000000","message":"I noticed there are several exceptions that would still get exposed after this conversion, namely RequestException [1] and those that derive from it. I think it would be okay to catch RequestException rather than all the ones, individually.\n\n[1] https://github.com/kennethreitz/requests/blob/master/requests/exceptions.py","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"@contextlib.contextmanager"},{"line_number":381,"context_line":"def converted_exceptions():"},{"line_number":382,"context_line":"    try:"},{"line_number":383,"context_line":"        yield"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_64951631","line":381,"in_reply_to":"3a29b11f_81188f76","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    except requests.HTTPError as e:"},{"line_number":386,"context_line":"        status_code \u003d e.response.status_code"},{"line_number":387,"context_line":"        raise exceptions.ClientException(status_code, str(e))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    except requests.ConnectionError as e:"},{"line_number":390,"context_line":"        raise exceptions.ConnectionError(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_a31596e5","line":387,"range":{"start_line":387,"start_character":54,"end_line":387,"end_character":60},"updated":"2015-10-21 21:39:31.000000000","message":"I think we should use encodeutils.exception_to_unicode here in case of a unicode message and python2","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    except requests.HTTPError as e:"},{"line_number":386,"context_line":"        status_code \u003d e.response.status_code"},{"line_number":387,"context_line":"        raise exceptions.ClientException(status_code, str(e))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    except requests.ConnectionError as e:"},{"line_number":390,"context_line":"        raise exceptions.ConnectionError(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_a4700e41","line":387,"in_reply_to":"3a29b11f_a31596e5","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        raise exceptions.ClientException(status_code, str(e))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    except requests.ConnectionError as e:"},{"line_number":390,"context_line":"        raise exceptions.ConnectionError(str(e))"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    except requests.Timeout as e:"},{"line_number":393,"context_line":"        raise exceptions.RequestTimeout(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_63da1e4e","line":390,"range":{"start_line":390,"start_character":41,"end_line":390,"end_character":47},"updated":"2015-10-21 21:39:31.000000000","message":"Same comment as above","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        raise exceptions.ClientException(status_code, str(e))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    except requests.ConnectionError as e:"},{"line_number":390,"context_line":"        raise exceptions.ConnectionError(str(e))"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    except requests.Timeout as e:"},{"line_number":393,"context_line":"        raise exceptions.RequestTimeout(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_8475d232","line":390,"in_reply_to":"3a29b11f_63da1e4e","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        raise exceptions.ConnectionError(str(e))"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    except requests.Timeout as e:"},{"line_number":393,"context_line":"        raise exceptions.RequestTimeout(str(e))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    except requests.TooManyRedirects as e:"},{"line_number":396,"context_line":"        raise exceptions.TooManyRedirects(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_23e0a6f9","line":393,"range":{"start_line":393,"start_character":40,"end_line":393,"end_character":46},"updated":"2015-10-21 21:39:31.000000000","message":"Same comment as above","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        raise exceptions.ConnectionError(str(e))"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    except requests.Timeout as e:"},{"line_number":393,"context_line":"        raise exceptions.RequestTimeout(str(e))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    except requests.TooManyRedirects as e:"},{"line_number":396,"context_line":"        raise exceptions.TooManyRedirects(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_e47a8623","line":393,"in_reply_to":"3a29b11f_23e0a6f9","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"777b69c9a3621222c2cc40928544131771c397d5","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        raise exceptions.RequestTimeout(str(e))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    except requests.TooManyRedirects as e:"},{"line_number":396,"context_line":"        raise exceptions.TooManyRedirects(str(e))"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"def get_function_name(func):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_e3e62e14","line":396,"range":{"start_line":396,"start_character":42,"end_line":396,"end_character":48},"updated":"2015-10-21 21:39:31.000000000","message":"Same comment as above","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"a05c68d1d19881db3f864c50fc6f12ece7431a21","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        raise exceptions.RequestTimeout(str(e))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    except requests.TooManyRedirects as e:"},{"line_number":396,"context_line":"        raise exceptions.TooManyRedirects(str(e))"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"def get_function_name(func):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a29b11f_c47f4a13","line":396,"in_reply_to":"3a29b11f_e3e62e14","updated":"2015-10-22 19:34:02.000000000","message":"Done","commit_id":"bf58e9b93b96f47943beb3c9589fdc61a1c9d01f"}]}
