)]}'
{"ceilometerclient/common/http.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0866974e1935f58db638a4cd3f24f846bd7fa82c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        msg \u003d \u0027Unsupported scheme: %s\u0027 % scheme"},{"line_number":222,"context_line":"        raise exc.InvalidEndpoint(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def get_no_proxy_hosts(self):"},{"line_number":225,"context_line":"        no_proxy_hosts \u003d os.environ.get(\u0027no_proxy\u0027)"},{"line_number":226,"context_line":"        if no_proxy_hosts is None:"},{"line_number":227,"context_line":"            return \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_3055a4c6","line":224,"updated":"2014-05-30 08:57:29.000000000","message":"@staticmethod?","commit_id":"71f4de1c459df701414ee8b9ae8c7f66a9de65a1"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"2fb92f3b4681dbbde3122f480e3c87deec802ab1","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        msg \u003d \u0027Unsupported scheme: %s\u0027 % scheme"},{"line_number":222,"context_line":"        raise exc.InvalidEndpoint(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def get_no_proxy_hosts(self):"},{"line_number":225,"context_line":"        no_proxy_hosts \u003d os.environ.get(\u0027no_proxy\u0027)"},{"line_number":226,"context_line":"        if no_proxy_hosts is None:"},{"line_number":227,"context_line":"            return \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_96d3cb37","line":224,"in_reply_to":"1ae5cdf2_3055a4c6","updated":"2014-05-30 13:00:32.000000000","message":"I would leave this as it is, all the other methods are not static. So I would prefer to keep homogeneity.","commit_id":"71f4de1c459df701414ee8b9ae8c7f66a9de65a1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0866974e1935f58db638a4cd3f24f846bd7fa82c","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        no_proxy_hosts \u003d os.environ.get(\u0027no_proxy\u0027)"},{"line_number":226,"context_line":"        if no_proxy_hosts is None:"},{"line_number":227,"context_line":"            return \u0027\u0027"},{"line_number":228,"context_line":"        return no_proxy_hosts"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def use_proxy(self):"},{"line_number":231,"context_line":"        host \u003d self.connection_params[1][0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_70056cc1","line":228,"updated":"2014-05-30 08:57:29.000000000","message":"how about consolidate the 3 lines into 1:\nreturn os.environ.get(\u0027no_proxy\u0027) or \u0027\u0027","commit_id":"71f4de1c459df701414ee8b9ae8c7f66a9de65a1"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"2fb92f3b4681dbbde3122f480e3c87deec802ab1","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        no_proxy_hosts \u003d os.environ.get(\u0027no_proxy\u0027)"},{"line_number":226,"context_line":"        if no_proxy_hosts is None:"},{"line_number":227,"context_line":"            return \u0027\u0027"},{"line_number":228,"context_line":"        return no_proxy_hosts"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def use_proxy(self):"},{"line_number":231,"context_line":"        host \u003d self.connection_params[1][0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_3693d7a4","line":228,"in_reply_to":"1ae5cdf2_70056cc1","updated":"2014-05-30 13:00:32.000000000","message":"Good idea. Done","commit_id":"71f4de1c459df701414ee8b9ae8c7f66a9de65a1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e1e6ead54dd4616cb2c394797e8d0efd7486c213","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        raise exc.InvalidEndpoint(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def get_no_proxy_hosts(self):"},{"line_number":225,"context_line":"        return os.environ.get(\u0027no_proxy\u0027) or \u0027\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def use_proxy(self):"},{"line_number":228,"context_line":"        host \u003d self.connection_params[1][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_3910284e","line":225,"updated":"2014-05-30 13:19:49.000000000","message":"From what I can find, the content of the no_proxy environment variable is a comma separated list of hosts (e.g \u0027example.com,example.co.uk\u0027 OR a comma separated lists of hosts with optional ports (e.g. \u0027example.com:8080,example.co.uk\u0027).\n\nIf taken as a straight string then the conditional in \"use_proxy\" will give false positives when there is a substring match.\n\nA more robust solution would be to split no_proxy on \u0027,\u0027 and store as a list. Then then use_proxy, as written, would work more accurately.\n\nHowever, that stills leaves the optional port handling out.","commit_id":"71ac2b349d48bc005a7c60a3cd8350b070208a0c"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"27bbb22141b5ce4496a5a72eb53ca30d152fac58","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        raise exc.InvalidEndpoint(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def get_no_proxy_hosts(self):"},{"line_number":225,"context_line":"        return os.environ.get(\u0027no_proxy\u0027) or \u0027\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def use_proxy(self):"},{"line_number":228,"context_line":"        host \u003d self.connection_params[1][0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_c5dd9744","line":225,"in_reply_to":"1ae5cdf2_3910284e","updated":"2014-05-30 14:58:11.000000000","message":"There´s this function urllib.proxy_bypass which takes care of comma separated values, ports and also handles wildcards like *.redhat.com. \nI will submit a new patch with that","commit_id":"71ac2b349d48bc005a7c60a3cd8350b070208a0c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"1375d0cc842cc2b1ff7154e5bb06f8c499d5c65f","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        msg \u003d \u0027Unsupported scheme: %s\u0027 % scheme"},{"line_number":222,"context_line":"        raise exc.InvalidEndpoint(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def use_proxy(self):"},{"line_number":225,"context_line":"        host \u003d self.connection_params[1][0]"},{"line_number":226,"context_line":"        return self.proxy_url and not request.proxy_bypass(host)"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_1fc2ec58","line":224,"updated":"2014-06-04 02:57:11.000000000","message":"Sorry for the nitpicking again. But I think this method should be called only once and saved the result as a instance attribute since the result is never changed, so there is no need to call this method every time sending out http request.","commit_id":"a29335413289962213f4f0e3a8abb86a1f3fb425"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"3e72b2137dead8aba8558e0807a5bd1b4914c2a2","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        msg \u003d \u0027Unsupported scheme: %s\u0027 % scheme"},{"line_number":222,"context_line":"        raise exc.InvalidEndpoint(msg)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def use_proxy(self):"},{"line_number":225,"context_line":"        host \u003d self.connection_params[1][0]"},{"line_number":226,"context_line":"        return self.proxy_url and not request.proxy_bypass(host)"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_eae804e4","line":224,"in_reply_to":"1ae5cdf2_1fc2ec58","updated":"2014-06-04 17:26:44.000000000","message":"agree. Changed it","commit_id":"a29335413289962213f4f0e3a8abb86a1f3fb425"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"1deb0892de4cec9cbcfa828cde0087be2e2c0dd4","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _use_proxy(self):"},{"line_number":226,"context_line":"        host \u003d self.connection_params[1][0]"},{"line_number":227,"context_line":"        return self.proxy_url is not None and not request.proxy_bypass(host)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class VerifiedHTTPSConnection(httplib.HTTPSConnection):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_a57de6b3","line":227,"updated":"2014-06-09 03:27:45.000000000","message":"Why not\nreturn self.proxy_url and not request.proxy_bypass(host)? Or just  move these lines into __init__()?","commit_id":"1256bc311622b78cc8369aef13a009139fec3da1"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"0a05d43748e1194209a60a235c3f0ebdc93de213","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _use_proxy(self):"},{"line_number":226,"context_line":"        host \u003d self.connection_params[1][0]"},{"line_number":227,"context_line":"        return self.proxy_url is not None and not request.proxy_bypass(host)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class VerifiedHTTPSConnection(httplib.HTTPSConnection):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_7f14d043","line":227,"in_reply_to":"1ae5cdf2_a57de6b3","updated":"2014-06-11 17:25:37.000000000","message":"OK, I will change this line. But I prefer to leave this in a separate method to keep __init__ as clean as possible","commit_id":"1256bc311622b78cc8369aef13a009139fec3da1"}],"ceilometerclient/tests/test_http.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3db803c3719db1239dea8e7ba6335a7ebf053969","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conn.request.side_effect \u003d Exception(\"stop\")"},{"line_number":56,"context_line":"        get_conn.return_value \u003d conn"},{"line_number":57,"context_line":"        client \u003d http.HTTPClient(self.url, token\u003dlambda: \u0027token\u0027)"},{"line_number":58,"context_line":"        client.proxy_url \u003d \"http://localhost:3128/\""},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            client._http_request(\u0027/v1/resources\u0027, \u0027GET\u0027)"},{"line_number":61,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_b74818b4","line":58,"updated":"2014-06-05 01:13:48.000000000","message":"-1: L58 should in front of L57","commit_id":"5ebca0399f68c43439e99529784b7dc789df7113"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"59dface13de85c209fcff475bcc1d6d19c6dbb38","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        conn.request.side_effect \u003d Exception(\"stop\")"},{"line_number":56,"context_line":"        get_conn.return_value \u003d conn"},{"line_number":57,"context_line":"        client \u003d http.HTTPClient(self.url, token\u003dlambda: \u0027token\u0027)"},{"line_number":58,"context_line":"        client.proxy_url \u003d \"http://localhost:3128/\""},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            client._http_request(\u0027/v1/resources\u0027, \u0027GET\u0027)"},{"line_number":61,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_f3d8ab81","line":58,"in_reply_to":"1ae5cdf2_b74818b4","updated":"2014-06-06 20:31:59.000000000","message":"that can\u0027t be done because client is not instantiated until L57","commit_id":"5ebca0399f68c43439e99529784b7dc789df7113"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"3db803c3719db1239dea8e7ba6335a7ebf053969","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        conn.request.side_effect \u003d Exception(\"stop\")"},{"line_number":74,"context_line":"        get_conn.return_value \u003d conn"},{"line_number":75,"context_line":"        client \u003d http.HTTPClient(self.url, token\u003dlambda: \u0027token\u0027)"},{"line_number":76,"context_line":"        client.proxy_url \u003d \"http://proxy:3128/\""},{"line_number":77,"context_line":"        try:"},{"line_number":78,"context_line":"            client._http_request(\u0027/v1/resources\u0027, \u0027GET\u0027)"},{"line_number":79,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_f7cd4032","line":76,"updated":"2014-06-05 01:13:48.000000000","message":"-1: ditto","commit_id":"5ebca0399f68c43439e99529784b7dc789df7113"},{"author":{"_account_id":9225,"name":"Cristian A Sanchez","email":"cabsanchez@gmail.com","username":"casanch1"},"change_message_id":"59dface13de85c209fcff475bcc1d6d19c6dbb38","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        conn.request.side_effect \u003d Exception(\"stop\")"},{"line_number":74,"context_line":"        get_conn.return_value \u003d conn"},{"line_number":75,"context_line":"        client \u003d http.HTTPClient(self.url, token\u003dlambda: \u0027token\u0027)"},{"line_number":76,"context_line":"        client.proxy_url \u003d \"http://proxy:3128/\""},{"line_number":77,"context_line":"        try:"},{"line_number":78,"context_line":"            client._http_request(\u0027/v1/resources\u0027, \u0027GET\u0027)"},{"line_number":79,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_13e6f744","line":76,"in_reply_to":"1ae5cdf2_f7cd4032","updated":"2014-06-06 20:31:59.000000000","message":"that can\u0027t be done because client is not instantiated until L57","commit_id":"5ebca0399f68c43439e99529784b7dc789df7113"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"c9dafd29e5b1180102e635c20ecf6e948a1c5884","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ceilometerclient.common import http"},{"line_number":19,"context_line":"from ceilometerclient.tests import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from six.moves.urllib import request"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class HttpClientTest(utils.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_84d11a59","line":21,"updated":"2014-06-20 09:13:43.000000000","message":"the pep8 check should complain about this line, but not, it is odd. the local result of tox -epep8 shows that it fails","commit_id":"7290094c99e36ce92e0b0e3ff18fedc3471b9b47"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5695ac3856dd0d723ab7f38303675cf7accd5b2c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ceilometerclient.common import http"},{"line_number":19,"context_line":"from ceilometerclient.tests import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from six.moves.urllib import request"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class HttpClientTest(utils.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_f8497bb8","line":21,"in_reply_to":"1ae5cdf2_2cbe2801","updated":"2014-07-28 20:56:56.000000000","message":"let\u0027s fix this.","commit_id":"7290094c99e36ce92e0b0e3ff18fedc3471b9b47"},{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"1c02299c2082750580f7552f38d6d0bfd436b68c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ceilometerclient.common import http"},{"line_number":19,"context_line":"from ceilometerclient.tests import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from six.moves.urllib import request"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class HttpClientTest(utils.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_2cbe2801","line":21,"in_reply_to":"1ae5cdf2_84d11a59","updated":"2014-06-23 17:42:57.000000000","message":"3rd party lib should be imported before OS libs (move it up)","commit_id":"7290094c99e36ce92e0b0e3ff18fedc3471b9b47"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"224e3a7168e6c242a611c1244ed8b0d28a63d751","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ceilometerclient.common import http"},{"line_number":19,"context_line":"from ceilometerclient.tests import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from six.moves.urllib import request"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class HttpClientTest(utils.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_7865a2b3","line":21,"in_reply_to":"baada198_f8497bb8","updated":"2014-08-21 18:50:10.000000000","message":"Agree, this lib should be shifted to the second import block together with\n\"import mock\"","commit_id":"7290094c99e36ce92e0b0e3ff18fedc3471b9b47"}]}
