)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b01178e1d5359460fbd53933b18d0dbe0d808072","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     paresh-sao \u003cparesh.sao@hpe.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-10-04 06:20:55 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added optional url redirection param to connector"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commits adds optional paramter \u0027allow_redirects\u0027 to on and off"},{"line_number":10,"context_line":"url redirection for any request."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_a84db599","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2018-10-04 05:45:29.000000000","message":"How about:\n\nAdd optional URL redirection parameter\n\n?","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"f87d46a74231bbe71cb2f880a20673cb2375ca02","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     paresh-sao \u003cparesh.sao@hpe.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-10-04 06:20:55 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added optional url redirection param to connector"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commits adds optional paramter \u0027allow_redirects\u0027 to on and off"},{"line_number":10,"context_line":"url redirection for any request."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_366a62b4","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"in_reply_to":"3f79a3b5_a84db599","updated":"2018-10-04 07:03:14.000000000","message":"Done","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"076080150151c9b53a45ff96ac11f545c8156dbd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commits adds optional paramter \u0027allow_redirects\u0027 to on and off"},{"line_number":10,"context_line":"url redirection for any request."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I6bd9a0719acfb839fcf137c58bcf03254b1af5ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_fcf7eb8a","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":9},"updated":"2018-10-04 09:22:14.000000000","message":"Add a story for this as releasenotes are also required for this change.","commit_id":"6d6741377df56fa7ae7394f1b88c357ce851fc5b"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"039217159f0a58f8725e93fc4170e83ffaf8cc14","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commits adds optional paramter \u0027allow_redirects\u0027 to on and off"},{"line_number":10,"context_line":"url redirection for any request."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I6bd9a0719acfb839fcf137c58bcf03254b1af5ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_e06e4763","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":9},"in_reply_to":"3f79a3b5_fcf7eb8a","updated":"2018-10-05 06:13:58.000000000","message":"Done","commit_id":"6d6741377df56fa7ae7394f1b88c357ce851fc5b"}],"releasenotes/notes/add_keyword_argument_for_connector-cea5dc4e6c01b548.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dff76d8c0026b0da1306198a68d214f5ba1cc02b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This will add functionality to pass different requests library session"},{"line_number":5,"context_line":"    arguments to sushy connector."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3f79a3b5_8a2ebbf6","line":4,"updated":"2018-10-16 08:33:16.000000000","message":"s/This will add/Adds/","commit_id":"d0883309e2a3de3b79ab9e4f402f167ce4bec4a3"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"3dd4fd906b45535df996fa25fe1f3f71be114d18","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This will add functionality to pass different requests library session"},{"line_number":5,"context_line":"    arguments to sushy connector."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3f79a3b5_f7a4da07","line":4,"in_reply_to":"3f79a3b5_8a2ebbf6","updated":"2018-10-17 05:26:13.000000000","message":"Done","commit_id":"d0883309e2a3de3b79ab9e4f402f167ce4bec4a3"}],"sushy/connector.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b01178e1d5359460fbd53933b18d0dbe0d808072","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        :param path: The sub-URI path to the resource."},{"line_number":64,"context_line":"        :param data: Optional JSON data."},{"line_number":65,"context_line":"        :param headers: Optional dictionary of headers."},{"line_number":66,"context_line":"        :param allow_redirects: Optional param for url redirection"},{"line_number":67,"context_line":"        :returns: The response object from the requests library."},{"line_number":68,"context_line":"        :raises: ConnectionError"},{"line_number":69,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c8535139","line":66,"range":{"start_line":66,"start_character":51,"end_line":66,"end_character":54},"updated":"2018-10-04 05:45:29.000000000","message":"URL","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b01178e1d5359460fbd53933b18d0dbe0d808072","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        :param path: The sub-URI path to the resource."},{"line_number":64,"context_line":"        :param data: Optional JSON data."},{"line_number":65,"context_line":"        :param headers: Optional dictionary of headers."},{"line_number":66,"context_line":"        :param allow_redirects: Optional param for url redirection"},{"line_number":67,"context_line":"        :returns: The response object from the requests library."},{"line_number":68,"context_line":"        :raises: ConnectionError"},{"line_number":69,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_2859a559","line":66,"range":{"start_line":66,"start_character":41,"end_line":66,"end_character":46},"updated":"2018-10-04 05:45:29.000000000","message":"nit: may be flag?","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"f87d46a74231bbe71cb2f880a20673cb2375ca02","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        :param path: The sub-URI path to the resource."},{"line_number":64,"context_line":"        :param data: Optional JSON data."},{"line_number":65,"context_line":"        :param headers: Optional dictionary of headers."},{"line_number":66,"context_line":"        :param allow_redirects: Optional param for url redirection"},{"line_number":67,"context_line":"        :returns: The response object from the requests library."},{"line_number":68,"context_line":"        :raises: ConnectionError"},{"line_number":69,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ab9ccfbe","line":66,"range":{"start_line":66,"start_character":41,"end_line":66,"end_character":46},"in_reply_to":"3f79a3b5_2859a559","updated":"2018-10-04 07:03:14.000000000","message":"Done","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"f87d46a74231bbe71cb2f880a20673cb2375ca02","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        :param path: The sub-URI path to the resource."},{"line_number":64,"context_line":"        :param data: Optional JSON data."},{"line_number":65,"context_line":"        :param headers: Optional dictionary of headers."},{"line_number":66,"context_line":"        :param allow_redirects: Optional param for url redirection"},{"line_number":67,"context_line":"        :returns: The response object from the requests library."},{"line_number":68,"context_line":"        :raises: ConnectionError"},{"line_number":69,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_4b9f3bb2","line":66,"range":{"start_line":66,"start_character":51,"end_line":66,"end_character":54},"in_reply_to":"3f79a3b5_c8535139","updated":"2018-10-04 07:03:14.000000000","message":"Done","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b01178e1d5359460fbd53933b18d0dbe0d808072","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            response \u003d self._session.request(method, url,"},{"line_number":88,"context_line":"                                             data\u003djson_data,"},{"line_number":89,"context_line":"                                             headers\u003dheaders,"},{"line_number":90,"context_line":"                                             allow_redirects\u003dallow_redirects)"},{"line_number":91,"context_line":"        except requests.ConnectionError as e:"},{"line_number":92,"context_line":"            raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":93,"context_line":"        # If we received an AccessError, and we"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_082389bf","line":90,"range":{"start_line":90,"start_character":45,"end_line":90,"end_character":60},"updated":"2018-10-04 05:45:29.000000000","message":"Considering other possible `request` options, would it make sense to pass the a dict of kw parameters from the caller\u0027s level down to `requests` without intermediate interpretation?","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"f87d46a74231bbe71cb2f880a20673cb2375ca02","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            response \u003d self._session.request(method, url,"},{"line_number":88,"context_line":"                                             data\u003djson_data,"},{"line_number":89,"context_line":"                                             headers\u003dheaders,"},{"line_number":90,"context_line":"                                             allow_redirects\u003dallow_redirects)"},{"line_number":91,"context_line":"        except requests.ConnectionError as e:"},{"line_number":92,"context_line":"            raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":93,"context_line":"        # If we received an AccessError, and we"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1635e6da","line":90,"range":{"start_line":90,"start_character":45,"end_line":90,"end_character":60},"in_reply_to":"3f79a3b5_082389bf","updated":"2018-10-04 07:03:14.000000000","message":"Make sense, but requests session api doesnt have keyword arguments so we have to parse it here which will be pretty messy.","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d2840585cb1afe772004c98037ccd31ace3e0fe1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            response \u003d self._session.request(method, url,"},{"line_number":88,"context_line":"                                             data\u003djson_data,"},{"line_number":89,"context_line":"                                             headers\u003dheaders,"},{"line_number":90,"context_line":"                                             allow_redirects\u003dallow_redirects)"},{"line_number":91,"context_line":"        except requests.ConnectionError as e:"},{"line_number":92,"context_line":"            raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":93,"context_line":"        # If we received an AccessError, and we"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_715ea4e9","line":90,"range":{"start_line":90,"start_character":45,"end_line":90,"end_character":60},"in_reply_to":"3f79a3b5_1635e6da","updated":"2018-10-04 07:51:56.000000000","message":"Can we still call `request` like this?\n\n  self._session.request(method, url, **session_kwargs)\n\nWhere `session_kwargs` is a dict which should contain exclusively parameters from [1]. Otherwise parameters binding will fail at run time.\n\n1. http://docs.python-requests.org/en/master/api/#requests.Session.request","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"1c3dd824d99416accbaa5086f6bfcc12bc012ae7","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            response \u003d self._session.request(method, url,"},{"line_number":88,"context_line":"                                             data\u003djson_data,"},{"line_number":89,"context_line":"                                             headers\u003dheaders,"},{"line_number":90,"context_line":"                                             allow_redirects\u003dallow_redirects)"},{"line_number":91,"context_line":"        except requests.ConnectionError as e:"},{"line_number":92,"context_line":"            raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":93,"context_line":"        # If we received an AccessError, and we"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f46a9880","line":90,"range":{"start_line":90,"start_character":45,"end_line":90,"end_character":60},"in_reply_to":"3f79a3b5_715ea4e9","updated":"2018-10-04 15:05:05.000000000","message":"+++++\n\nAlso, need to change the signature of those wrapper methods like get, post, put etc. to use that ``**session_request_options``","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"076080150151c9b53a45ff96ac11f545c8156dbd","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            response \u003d self._session.request(method, url,"},{"line_number":88,"context_line":"                                             data\u003djson_data,"},{"line_number":89,"context_line":"                                             headers\u003dheaders,"},{"line_number":90,"context_line":"                                             allow_redirects\u003dallow_redirects)"},{"line_number":91,"context_line":"        except requests.ConnectionError as e:"},{"line_number":92,"context_line":"            raise exceptions.ConnectionError(url\u003durl, error\u003de)"},{"line_number":93,"context_line":"        # If we received an AccessError, and we"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b78bcc66","line":90,"range":{"start_line":90,"start_character":45,"end_line":90,"end_character":60},"in_reply_to":"3f79a3b5_715ea4e9","updated":"2018-10-04 09:22:14.000000000","message":"+1","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5e894efe28d050ce07e147a45f319a2ff3da54df","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        json_data \u003d None"},{"line_number":70,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":71,"context_line":"            session_kwargs[\u0027headers\u0027] \u003d {}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":74,"context_line":"            json_data \u003d json.dumps(session_kwargs.get(\u0027data\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a09b6877","line":71,"updated":"2018-10-05 12:25:47.000000000","message":"nit:\n\n session_kwargs.setdefault(\u0027headers\u0027, {})","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"cbd7bcf6e441ee98bff8a77ca210f80487045fd3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        json_data \u003d None"},{"line_number":70,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":71,"context_line":"            session_kwargs[\u0027headers\u0027] \u003d {}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":74,"context_line":"            json_data \u003d json.dumps(session_kwargs.get(\u0027data\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3f2c35b1","line":71,"in_reply_to":"3f79a3b5_a09b6877","updated":"2018-10-08 10:11:39.000000000","message":"This will break if user will pass {\u0027headers\u0027: None} and then later some data. So good thing will be to check headers is not None then intialize.","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5e894efe28d050ce07e147a45f319a2ff3da54df","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            session_kwargs[\u0027headers\u0027] \u003d {}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":74,"context_line":"            json_data \u003d json.dumps(session_kwargs.get(\u0027data\u0027))"},{"line_number":75,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        url \u003d parse.urljoin(self._url, path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c0a0e4a7","line":74,"updated":"2018-10-05 12:25:47.000000000","message":"I seem to recall we can just pass \"json\" to requests instead, this would avoid json.dumps completely","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"cbd7bcf6e441ee98bff8a77ca210f80487045fd3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            session_kwargs[\u0027headers\u0027] \u003d {}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":74,"context_line":"            json_data \u003d json.dumps(session_kwargs.get(\u0027data\u0027))"},{"line_number":75,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        url \u003d parse.urljoin(self._url, path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7f294d9a","line":74,"in_reply_to":"3f79a3b5_c0a0e4a7","updated":"2018-10-08 10:11:39.000000000","message":"we can pass json but we can\u0027t use \u0027data\u0027 keyword with, i implemented \u0027json\u0027 here.","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5e894efe28d050ce07e147a45f319a2ff3da54df","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        url \u003d parse.urljoin(self._url, path)"},{"line_number":78,"context_line":"        session_kwargs[\u0027data\u0027] \u003d json_data"},{"line_number":79,"context_line":"        # TODO(lucasagomes): We should mask the data to remove sensitive"},{"line_number":80,"context_line":"        # information"},{"line_number":81,"context_line":"        LOG.debug(\u0027HTTP request: %(method)s %(url)s; \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_60a550b4","line":78,"updated":"2018-10-05 12:25:47.000000000","message":"let\u0027s not pass None, it\u0027s pointless.","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"cbd7bcf6e441ee98bff8a77ca210f80487045fd3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        url \u003d parse.urljoin(self._url, path)"},{"line_number":78,"context_line":"        session_kwargs[\u0027data\u0027] \u003d json_data"},{"line_number":79,"context_line":"        # TODO(lucasagomes): We should mask the data to remove sensitive"},{"line_number":80,"context_line":"        # information"},{"line_number":81,"context_line":"        LOG.debug(\u0027HTTP request: %(method)s %(url)s; \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3f15154d","line":78,"in_reply_to":"3f79a3b5_60a550b4","updated":"2018-10-08 10:11:39.000000000","message":"Done","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5e894efe28d050ce07e147a45f319a2ff3da54df","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # information"},{"line_number":81,"context_line":"        LOG.debug(\u0027HTTP request: %(method)s %(url)s; \u0027"},{"line_number":82,"context_line":"                  \u0027headers: %(headers)s; body: %(data)s\u0027,"},{"line_number":83,"context_line":"                  {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":84,"context_line":"                   \u0027headers\u0027: session_kwargs[\u0027headers\u0027],"},{"line_number":85,"context_line":"                   \u0027data\u0027: session_kwargs[\u0027data\u0027]})"},{"line_number":86,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_80aaec81","line":83,"updated":"2018-10-05 12:25:47.000000000","message":"let\u0027s just log the whole session_kwargs without assuming its contents","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"cbd7bcf6e441ee98bff8a77ca210f80487045fd3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # information"},{"line_number":81,"context_line":"        LOG.debug(\u0027HTTP request: %(method)s %(url)s; \u0027"},{"line_number":82,"context_line":"                  \u0027headers: %(headers)s; body: %(data)s\u0027,"},{"line_number":83,"context_line":"                  {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":84,"context_line":"                   \u0027headers\u0027: session_kwargs[\u0027headers\u0027],"},{"line_number":85,"context_line":"                   \u0027data\u0027: session_kwargs[\u0027data\u0027]})"},{"line_number":86,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ff0ebd3b","line":83,"in_reply_to":"3f79a3b5_80aaec81","updated":"2018-10-08 10:11:39.000000000","message":"Done","commit_id":"477fe765c7793f1f4c6737126098d9ecfb4b0716"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dff76d8c0026b0da1306198a68d214f5ba1cc02b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :raises: HTTPError"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":69,"context_line":"            session_kwargs[\u0027headers\u0027] \u003d {}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":72,"context_line":"            session_kwargs[\u0027json\u0027] \u003d session_kwargs.pop(\u0027data\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_aa31375a","line":69,"updated":"2018-10-16 08:33:16.000000000","message":"nit:\n\n session_kwargs.setdefault(\u0027headers\u0027, {})","commit_id":"d0883309e2a3de3b79ab9e4f402f167ce4bec4a3"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"3dd4fd906b45535df996fa25fe1f3f71be114d18","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :raises: HTTPError"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":69,"context_line":"            session_kwargs[\u0027headers\u0027] \u003d {}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":72,"context_line":"            session_kwargs[\u0027json\u0027] \u003d session_kwargs.pop(\u0027data\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_77d0ca53","line":69,"in_reply_to":"3f79a3b5_aa31375a","updated":"2018-10-17 05:26:13.000000000","message":"Done","commit_id":"d0883309e2a3de3b79ab9e4f402f167ce4bec4a3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dff76d8c0026b0da1306198a68d214f5ba1cc02b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        LOG.debug(\u0027HTTP request: %(method)s %(url)s; \u0027"},{"line_number":79,"context_line":"                  \u0027session arguments: %(session)s;\u0027,"},{"line_number":80,"context_line":"                  {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":81,"context_line":"                   \u0027session\u0027: str(session_kwargs)})"},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            response \u003d self._session.request(method, url, **session_kwargs)"},{"line_number":84,"context_line":"        except requests.ConnectionError as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4a3c232f","line":81,"updated":"2018-10-16 08:33:16.000000000","message":"nit: str() is redundant, it\u0027s implied by %s","commit_id":"d0883309e2a3de3b79ab9e4f402f167ce4bec4a3"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"3dd4fd906b45535df996fa25fe1f3f71be114d18","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        LOG.debug(\u0027HTTP request: %(method)s %(url)s; \u0027"},{"line_number":79,"context_line":"                  \u0027session arguments: %(session)s;\u0027,"},{"line_number":80,"context_line":"                  {\u0027method\u0027: method, \u0027url\u0027: url,"},{"line_number":81,"context_line":"                   \u0027session\u0027: str(session_kwargs)})"},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            response \u003d self._session.request(method, url, **session_kwargs)"},{"line_number":84,"context_line":"        except requests.ConnectionError as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_d790be9a","line":81,"in_reply_to":"3f79a3b5_4a3c232f","updated":"2018-10-17 05:26:13.000000000","message":"Done","commit_id":"d0883309e2a3de3b79ab9e4f402f167ce4bec4a3"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7a78fccba607b09b245e7390c25932289e42a5b9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        :param method: The HTTP method to be used, e.g: GET, POST,"},{"line_number":61,"context_line":"            PUT, PATCH, etc..."},{"line_number":62,"context_line":"        :param path: The sub-URI path to the resource."},{"line_number":63,"context_line":"        :param session_kwargs: Optional requests session keyword arguments."},{"line_number":64,"context_line":"        :returns: The response object from the requests library."},{"line_number":65,"context_line":"        :raises: ConnectionError"},{"line_number":66,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_9841f90b","line":63,"range":{"start_line":63,"start_character":15,"end_line":63,"end_character":29},"updated":"2018-10-18 09:05:02.000000000","message":"Here and everywhere else: this sounds a little bit cryptic, may be explain that we pass these kwargs as-is to `requests`?\n\nExcept that we seem to mess with `data` -\u003e `json` key - worth noting?","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"3e1afe3807363d74c1f3e8ec2f67cc6f055fded0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        :param method: The HTTP method to be used, e.g: GET, POST,"},{"line_number":61,"context_line":"            PUT, PATCH, etc..."},{"line_number":62,"context_line":"        :param path: The sub-URI path to the resource."},{"line_number":63,"context_line":"        :param session_kwargs: Optional requests session keyword arguments."},{"line_number":64,"context_line":"        :returns: The response object from the requests library."},{"line_number":65,"context_line":"        :raises: ConnectionError"},{"line_number":66,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_158fb92f","line":63,"range":{"start_line":63,"start_character":15,"end_line":63,"end_character":29},"in_reply_to":"3f79a3b5_9841f90b","updated":"2018-10-22 05:23:19.000000000","message":"Done","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3bff2a250186bdf00a5c979dca016003696d2d31","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :raises: ConnectionError"},{"line_number":66,"context_line":"        :raises: HTTPError"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":69,"context_line":"            session_kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ea6dc867","line":68,"updated":"2018-10-17 15:12:56.000000000","message":"this line is no longer needed, it\u0027s covered by the next one","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"3e1afe3807363d74c1f3e8ec2f67cc6f055fded0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :raises: ConnectionError"},{"line_number":66,"context_line":"        :raises: HTTPError"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":69,"context_line":"            session_kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_75814dfa","line":68,"in_reply_to":"3f79a3b5_b8ecf528","updated":"2018-10-22 05:23:19.000000000","message":"This line is necessary actually, suppose i have a data with\nkwargs \u003d {\u0027headers\u0027: None} and if i remove this if condition then:\n\nsession_kwargs.setdefault(\u0027headers\u0027, {})\n\nwould not make \u0027headers\u0027 value to {}, it would be None only and then request library will throw an error. So this line is necessary.\n\nPS: Prolianutils library passes in many apis, {\u0027headers\u0027: None}","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7a78fccba607b09b245e7390c25932289e42a5b9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :raises: ConnectionError"},{"line_number":66,"context_line":"        :raises: HTTPError"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        if not session_kwargs.get(\u0027headers\u0027):"},{"line_number":69,"context_line":"            session_kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b8ecf528","line":68,"in_reply_to":"3f79a3b5_ea6dc867","updated":"2018-10-18 09:05:02.000000000","message":"++ worth a follow up","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7a78fccba607b09b245e7390c25932289e42a5b9","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":72,"context_line":"            session_kwargs[\u0027json\u0027] \u003d session_kwargs.pop(\u0027data\u0027)"},{"line_number":73,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        url \u003d parse.urljoin(self._url, path)"},{"line_number":76,"context_line":"        # TODO(lucasagomes): We should mask the data to remove sensitive"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_78f2dde6","line":73,"range":{"start_line":73,"start_character":39,"end_line":73,"end_character":52},"updated":"2018-10-18 09:05:02.000000000","message":"Do we want to override this unconditionally? Is it possible that the user would want to enforce their own content type?\n\nIf we chose to override content type, may be tell the user somehow that we are going to ignore whatever they pass in?\n\nJust looking for opinion. ;-)","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"3e1afe3807363d74c1f3e8ec2f67cc6f055fded0","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":72,"context_line":"            session_kwargs[\u0027json\u0027] \u003d session_kwargs.pop(\u0027data\u0027)"},{"line_number":73,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        url \u003d parse.urljoin(self._url, path)"},{"line_number":76,"context_line":"        # TODO(lucasagomes): We should mask the data to remove sensitive"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b5b5a5d1","line":73,"range":{"start_line":73,"start_character":39,"end_line":73,"end_character":52},"in_reply_to":"3f79a3b5_78f2dde6","updated":"2018-10-22 05:23:19.000000000","message":"requests library api says, if we pass \u0027data\u0027, we have options like touple, bytes and files, but if we pass \u0027json\u0027 only then header would be \u0027application/json\u0027 so i dont know may be the option would be like document to use \u0027json\u0027 keyword only not \u0027data\u0027.","commit_id":"5596eec4bd8ac6e3783380b8b354ee1d87d7e4ca"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        :raises: HTTPError"},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        json_data \u003d None"},{"line_number":71,"context_line":"        if headers is None:"},{"line_number":72,"context_line":"            headers \u003d {}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        if data is not None:"},{"line_number":75,"context_line":"            json_data \u003d json.dumps(data)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_abe6a848","side":"PARENT","line":72,"range":{"start_line":71,"start_character":8,"end_line":72,"end_character":24},"updated":"2018-10-22 07:51:32.000000000","message":"I think this is not needed at all. ``headers\u003dNone`` is a valid value in ``Session.request`` method [1].\n\n[1] http://www.python-requests.org/en/latest/api/#requests.Session.request","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        :raises: HTTPError"},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        json_data \u003d None"},{"line_number":71,"context_line":"        if headers is None:"},{"line_number":72,"context_line":"            headers \u003d {}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        if data is not None:"},{"line_number":75,"context_line":"            json_data \u003d json.dumps(data)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_d8787f7f","side":"PARENT","line":72,"range":{"start_line":71,"start_character":8,"end_line":72,"end_character":24},"in_reply_to":"3f79a3b5_abe6a848","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        return response"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def get(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":116,"context_line":"        \"\"\"HTTP GET method."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_4b6a74b5","side":"PARENT","line":115,"range":{"start_line":115,"start_character":27,"end_line":115,"end_character":51},"updated":"2018-10-22 07:51:32.000000000","message":"I hate to say this but I am not in favour of changing the signature of the public APIs available on Sushy Connector. The Connector class has been exposed from this library from its initial release. Perhaps add the arguments as:\n\n    get(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone, **extra_session_req_kwargs):\n      ...","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        return response"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def get(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":116,"context_line":"        \"\"\"HTTP GET method."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_d8b07f00","side":"PARENT","line":115,"range":{"start_line":115,"start_character":27,"end_line":115,"end_character":51},"in_reply_to":"3f79a3b5_4b6a74b5","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        return self._op(\u0027GET\u0027, path, data, headers)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def post(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":128,"context_line":"        \"\"\"HTTP POST method."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_8b95ec96","side":"PARENT","line":127,"range":{"start_line":127,"start_character":28,"end_line":127,"end_character":51},"updated":"2018-10-22 07:51:32.000000000","message":"ditto","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        return self._op(\u0027GET\u0027, path, data, headers)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def post(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":128,"context_line":"        \"\"\"HTTP POST method."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f8b3fb07","side":"PARENT","line":127,"range":{"start_line":127,"start_character":28,"end_line":127,"end_character":51},"in_reply_to":"3f79a3b5_8b95ec96","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        return self._op(\u0027POST\u0027, path, data, headers)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def patch(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":140,"context_line":"        \"\"\"HTTP PATCH method."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_4b9fd4b2","side":"PARENT","line":139,"range":{"start_line":139,"start_character":29,"end_line":139,"end_character":52},"updated":"2018-10-22 07:51:32.000000000","message":"ditto","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        return self._op(\u0027POST\u0027, path, data, headers)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def patch(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":140,"context_line":"        \"\"\"HTTP PATCH method."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_98ca076d","side":"PARENT","line":139,"range":{"start_line":139,"start_character":29,"end_line":139,"end_character":52},"in_reply_to":"3f79a3b5_4b9fd4b2","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        return self._op(\u0027PATCH\u0027, path, data, headers)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def put(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":152,"context_line":"        \"\"\"HTTP PUT method."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_2ba4d804","side":"PARENT","line":151,"range":{"start_line":151,"start_character":27,"end_line":151,"end_character":50},"updated":"2018-10-22 07:51:32.000000000","message":"ditto","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        return self._op(\u0027PATCH\u0027, path, data, headers)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def put(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":152,"context_line":"        \"\"\"HTTP PUT method."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b8c5835f","side":"PARENT","line":151,"range":{"start_line":151,"start_character":27,"end_line":151,"end_character":50},"in_reply_to":"3f79a3b5_2ba4d804","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        \"\"\""},{"line_number":161,"context_line":"        return self._op(\u0027PUT\u0027, path, data, headers)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def delete(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":164,"context_line":"        \"\"\"HTTP DELETE method."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_cbb2044b","side":"PARENT","line":163,"range":{"start_line":163,"start_character":30,"end_line":163,"end_character":53},"updated":"2018-10-22 07:51:32.000000000","message":"ditto","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        \"\"\""},{"line_number":161,"context_line":"        return self._op(\u0027PUT\u0027, path, data, headers)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def delete(self, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone):"},{"line_number":164,"context_line":"        \"\"\"HTTP DELETE method."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        :param path: Optional sub-URI path to the resource."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_58c46f60","side":"PARENT","line":163,"range":{"start_line":163,"start_character":30,"end_line":163,"end_character":53},"in_reply_to":"3f79a3b5_cbb2044b","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":74,"context_line":"            session_kwargs[\u0027json\u0027] \u003d session_kwargs.pop(\u0027data\u0027)"},{"line_number":75,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        url \u003d parse.urljoin(self._url, path)"},{"line_number":78,"context_line":"        # TODO(lucasagomes): We should mask the data to remove sensitive"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_6b3e508b","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":74},"updated":"2018-10-22 07:51:32.000000000","message":"this is not required when you set the json argument to the json_data value. It will be automatically set to application/json content-type.","commit_id":"d05d4afa6744dcd41cef87dff2764837a0cffe18"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"b2a5e4ed1a0043231bb3d81a91ddcb982c93d52f","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if session_kwargs.get(\u0027data\u0027):"},{"line_number":74,"context_line":"            session_kwargs[\u0027json\u0027] \u003d session_kwargs.pop(\u0027data\u0027)"},{"line_number":75,"context_line":"            session_kwargs[\u0027headers\u0027][\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        url \u003d parse.urljoin(self._url, path)"},{"line_number":78,"context_line":"        # TODO(lucasagomes): We should mask the data to remove sensitive"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_588c6f7f","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":74},"in_reply_to":"3f79a3b5_6b3e508b","updated":"2018-10-23 06:40:02.000000000","message":"Done","commit_id":"d05d4afa6744dcd41cef87dff2764837a0cffe18"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5aeea6374147095e13a45e6c7b107d481b943711","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self._session.close()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _op(self, method, path\u003d\u0027\u0027, data\u003dNone, headers\u003dNone,"},{"line_number":58,"context_line":"            **extra_session_req_kwargs):"},{"line_number":59,"context_line":"        \"\"\"Generic RESTful request handler."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        :param method: The HTTP method to be used, e.g: GET, POST,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_65dba279","line":58,"updated":"2018-10-24 10:35:21.000000000","message":"can we please call it extra_request_kwargs? the fact that we use a session is an implementation detail. this can be changed in a follow-up, since it\u0027s not (IIUC) a breaking change.","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5aeea6374147095e13a45e6c7b107d481b943711","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :param headers: Optional dictionary of headers."},{"line_number":66,"context_line":"        :param extra_session_req_kwargs: Optional keyword argument to pass"},{"line_number":67,"context_line":"         requests library arguments which would pass on to requests session"},{"line_number":68,"context_line":"         object."},{"line_number":69,"context_line":"        :returns: The response object from the requests library."},{"line_number":70,"context_line":"        :raises: ConnectionError"},{"line_number":71,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_05ce6eb6","line":68,"updated":"2018-10-24 10:35:21.000000000","message":"this needs indentation like\n\n :param ...: text\n     text text\n     text\n\nalso it should be just \"Optional keyword arguments to pass to the requests library\" IMO","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5aeea6374147095e13a45e6c7b107d481b943711","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        :param headers: Optional dictionary of headers."},{"line_number":117,"context_line":"        :param extra_session_req_kwargs: Optional keyword argument to pass"},{"line_number":118,"context_line":"         requests library arguments which would pass on to requests session"},{"line_number":119,"context_line":"         object."},{"line_number":120,"context_line":"        :returns: The response object from the requests library."},{"line_number":121,"context_line":"        :raises: ConnectionError"},{"line_number":122,"context_line":"        :raises: HTTPError"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_25d36a61","line":119,"updated":"2018-10-24 10:35:21.000000000","message":"ditto here and below","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"}],"sushy/tests/unit/test_connector.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b01178e1d5359460fbd53933b18d0dbe0d808072","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        expected_headers \u003d self.headers.copy()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.conn._op(\u0027GET\u0027, path\u003d\u0027fake/path\u0027, headers\u003dself.headers,"},{"line_number":133,"context_line":"                      allow_redirects\u003dFalse)"},{"line_number":134,"context_line":"        self.request.assert_called_once_with("},{"line_number":135,"context_line":"            \u0027GET\u0027, \u0027http://foo.bar:1234/fake/path\u0027,"},{"line_number":136,"context_line":"            data\u003dNone, headers\u003dexpected_headers, allow_redirects\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a81b757d","line":133,"range":{"start_line":133,"start_character":38,"end_line":133,"end_character":43},"updated":"2018-10-04 05:45:29.000000000","message":"Would it also make sense to test it with the default value?","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":22271,"name":"paresh","email":"paresh.sao@hpe.com","username":"kesper"},"change_message_id":"f87d46a74231bbe71cb2f880a20673cb2375ca02","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        expected_headers \u003d self.headers.copy()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.conn._op(\u0027GET\u0027, path\u003d\u0027fake/path\u0027, headers\u003dself.headers,"},{"line_number":133,"context_line":"                      allow_redirects\u003dFalse)"},{"line_number":134,"context_line":"        self.request.assert_called_once_with("},{"line_number":135,"context_line":"            \u0027GET\u0027, \u0027http://foo.bar:1234/fake/path\u0027,"},{"line_number":136,"context_line":"            data\u003dNone, headers\u003dexpected_headers, allow_redirects\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f63e2ab7","line":133,"range":{"start_line":133,"start_character":38,"end_line":133,"end_character":43},"in_reply_to":"3f79a3b5_a81b757d","updated":"2018-10-04 07:03:14.000000000","message":"Done","commit_id":"e3ff26aae0829aa48f019f8b38572c163e420af1"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7969228e26080a7956f706f90d0aeeabebac1f0f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                      headers\u003dself.headers)"},{"line_number":135,"context_line":"        self.request.assert_called_once_with("},{"line_number":136,"context_line":"            \u0027POST\u0027, \u0027http://foo.bar:1234/fake/path\u0027,"},{"line_number":137,"context_line":"            data\u003djson.dumps(self.data), headers\u003dexpected_headers)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_ok_put(self):"},{"line_number":140,"context_line":"        expected_headers \u003d self.headers.copy()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_0b6ebc96","side":"PARENT","line":137,"range":{"start_line":137,"start_character":12,"end_line":137,"end_character":17},"updated":"2018-10-22 07:51:32.000000000","message":"``data`` is regarded as the json data as part of the public API.","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"8fc7e60fd8358362690cab2320e18e537aac165d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.conn.get(path\u003d\u0027fake/path\u0027, data\u003dself.data.copy(),"},{"line_number":49,"context_line":"                      headers\u003dself.headers.copy())"},{"line_number":50,"context_line":"        mock__op.assert_called_once_with(mock.ANY, \u0027GET\u0027, \u0027fake/path\u0027,"},{"line_number":51,"context_line":"                                         self.data, self.headers)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @mock.patch.object(connector.Connector, \u0027_op\u0027, autospec\u003dTrue)"},{"line_number":54,"context_line":"    def test_post(self, mock__op):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_7a2026b2","side":"PARENT","line":51,"range":{"start_line":51,"start_character":41,"end_line":51,"end_character":64},"updated":"2018-10-24 02:56:55.000000000","message":"nit: no need. Invocation with positional arguments is still valid.","commit_id":"ec6e6c1df1aa3ea9d10adf163b6750f63ba42e78"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"8fc7e60fd8358362690cab2320e18e537aac165d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.conn.get(path\u003d\u0027fake/path\u0027, data\u003dself.data.copy(),"},{"line_number":49,"context_line":"                      headers\u003dself.headers.copy())"},{"line_number":50,"context_line":"        mock__op.assert_called_once_with(mock.ANY, \u0027GET\u0027, \u0027fake/path\u0027,"},{"line_number":51,"context_line":"                                         data\u003dself.data, headers\u003dself.headers)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @mock.patch.object(connector.Connector, \u0027_op\u0027, autospec\u003dTrue)"},{"line_number":54,"context_line":"    def test_post(self, mock__op):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_5af20a6b","line":51,"range":{"start_line":51,"start_character":41,"end_line":51,"end_character":46},"updated":"2018-10-24 02:56:55.000000000","message":"nit: not required","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"8fc7e60fd8358362690cab2320e18e537aac165d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.conn.post(path\u003d\u0027fake/path\u0027, data\u003dself.data.copy(),"},{"line_number":56,"context_line":"                       headers\u003dself.headers.copy())"},{"line_number":57,"context_line":"        mock__op.assert_called_once_with(mock.ANY, \u0027POST\u0027, \u0027fake/path\u0027,"},{"line_number":58,"context_line":"                                         data\u003dself.data, headers\u003dself.headers)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch.object(connector.Connector, \u0027_op\u0027, autospec\u003dTrue)"},{"line_number":61,"context_line":"    def test_patch(self, mock__op):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_da9b7a13","line":58,"range":{"start_line":58,"start_character":41,"end_line":58,"end_character":65},"updated":"2018-10-24 02:56:55.000000000","message":"ditto","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"8fc7e60fd8358362690cab2320e18e537aac165d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.conn.patch(path\u003d\u0027fake/path\u0027, data\u003dself.data.copy(),"},{"line_number":63,"context_line":"                        headers\u003dself.headers.copy())"},{"line_number":64,"context_line":"        mock__op.assert_called_once_with(mock.ANY, \u0027PATCH\u0027, \u0027fake/path\u0027,"},{"line_number":65,"context_line":"                                         data\u003dself.data, headers\u003dself.headers)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @mock.patch.object(connector.Connector, \u0027_op\u0027, autospec\u003dTrue)"},{"line_number":68,"context_line":"    def test_put(self, mock__op):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_7a84a6b2","line":65,"range":{"start_line":65,"start_character":41,"end_line":65,"end_character":65},"updated":"2018-10-24 02:56:55.000000000","message":"ditto","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"8fc7e60fd8358362690cab2320e18e537aac165d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.conn.put(path\u003d\u0027fake/path\u0027, data\u003dself.data.copy(),"},{"line_number":70,"context_line":"                      headers\u003dself.headers.copy())"},{"line_number":71,"context_line":"        mock__op.assert_called_once_with(mock.ANY, \u0027PUT\u0027, \u0027fake/path\u0027,"},{"line_number":72,"context_line":"                                         data\u003dself.data, headers\u003dself.headers)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch.object(connector.Connector, \u0027_op\u0027, autospec\u003dTrue)"},{"line_number":75,"context_line":"    def test_delete(self, mock__op):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_9a8182a3","line":72,"range":{"start_line":72,"start_character":41,"end_line":72,"end_character":65},"updated":"2018-10-24 02:56:55.000000000","message":"ditto","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"8fc7e60fd8358362690cab2320e18e537aac165d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.conn.delete(path\u003d\u0027fake/path\u0027, data\u003dself.data.copy(),"},{"line_number":77,"context_line":"                         headers\u003dself.headers.copy())"},{"line_number":78,"context_line":"        mock__op.assert_called_once_with(mock.ANY, \u0027DELETE\u0027, \u0027fake/path\u0027,"},{"line_number":79,"context_line":"                                         data\u003dself.data, headers\u003dself.headers)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_set_auth(self):"},{"line_number":82,"context_line":"        mock_auth \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_3a8aaebc","line":79,"range":{"start_line":79,"start_character":41,"end_line":79,"end_character":66},"updated":"2018-10-24 02:56:55.000000000","message":"ditto","commit_id":"e886e7182e2d54e124bd655b441ee3dc3987e461"}]}
