)]}'
{"swift/common/direct_client.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"75e00f22e1d57aedf880d2d10b95aa47071540c1","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def direct_get_container(node, part, account, container, marker\u003dNone,"},{"line_number":197,"context_line":"                         limit\u003dNone, prefix\u003dNone, delimiter\u003dNone,"},{"line_number":198,"context_line":"                         end_marker\u003dNone, reverse\u003dNone,"},{"line_number":199,"context_line":"                         conn_timeout\u003d5, response_timeout\u003d15):"},{"line_number":200,"context_line":"    \"\"\""},{"line_number":201,"context_line":"    Get container listings directly from the container server."}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_64dd0a0e","line":198,"updated":"2016-06-07 09:15:05.000000000","message":"I\u0027m not sure if we can insert new args into the mid of keyword args list that may break some third party callers which uses non-keyword ordered args calling.","commit_id":"e1581fb53f712c9ac86377b7fe6b66a6782ff4d4"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"2c8a2e0bc9f452bcaacef9c6c9e1eb86368e39b2","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def direct_get_container(node, part, account, container, marker\u003dNone,"},{"line_number":197,"context_line":"                         limit\u003dNone, prefix\u003dNone, delimiter\u003dNone,"},{"line_number":198,"context_line":"                         end_marker\u003dNone, reverse\u003dNone,"},{"line_number":199,"context_line":"                         conn_timeout\u003d5, response_timeout\u003d15):"},{"line_number":200,"context_line":"    \"\"\""},{"line_number":201,"context_line":"    Get container listings directly from the container server."}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_bd47d275","line":198,"in_reply_to":"7aa08908_64dd0a0e","updated":"2016-06-08 01:23:10.000000000","message":"Yeah, I was worried about that too. But seeing as it was internal use only and nothing broke in tests, I was thinking it might be ok. Happy to add it to the end though if need be :)","commit_id":"e1581fb53f712c9ac86377b7fe6b66a6782ff4d4"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e921ce00c140c9ce4dc662dd42c3fd2190eb35f8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    if end_marker:"},{"line_number":100,"context_line":"        qs +\u003d \u0027\u0026end_marker\u003d%s\u0027 % quote(end_marker)"},{"line_number":101,"context_line":"    if reverse:"},{"line_number":102,"context_line":"        qs +\u003d \u0027\u0026reverse\u003d%s\u0027 % quote(reverse)"},{"line_number":103,"context_line":"    with Timeout(conn_timeout):"},{"line_number":104,"context_line":"        conn \u003d http_connect(node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], part,"},{"line_number":105,"context_line":"                            \u0027GET\u0027, path, query_string\u003dqs,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_e3a6bbbf","line":102,"updated":"2016-08-05 13:32:10.000000000","message":"nit: I discovered that reverse must be a string, a boolean will cause quote to blow up. A nice follow-up might be:\n\n  if config_true_val(reverse):\n        qs +\u003d \u0027\u0026reverse\u003dyes\u0027","commit_id":"0d41b2326009c470f41f365c508e473ebdacb11c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e921ce00c140c9ce4dc662dd42c3fd2190eb35f8","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"def direct_get_account(node, part, account, marker\u003dNone, limit\u003dNone,"},{"line_number":131,"context_line":"                       prefix\u003dNone, delimiter\u003dNone, conn_timeout\u003d5,"},{"line_number":132,"context_line":"                       response_timeout\u003d15, end_marker\u003dNone, reverse\u003dNone):"},{"line_number":133,"context_line":"    \"\"\""},{"line_number":134,"context_line":"    Get listings directly from the account server."},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_3beabd74","line":132,"updated":"2016-08-05 13:32:10.000000000","message":"+1 for moving the new args to the end of the signature - not quite so pretty but safer imho.","commit_id":"0d41b2326009c470f41f365c508e473ebdacb11c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e921ce00c140c9ce4dc662dd42c3fd2190eb35f8","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    :param conn_timeout: timeout in seconds for establishing the connection"},{"line_number":144,"context_line":"    :param response_timeout: timeout in seconds for getting the response"},{"line_number":145,"context_line":"    :param end_marker: end_marker query"},{"line_number":146,"context_line":"    :param reverse: reverse the returned listing"},{"line_number":147,"context_line":"    :returns: a tuple of (response headers, a list of containers) The response"},{"line_number":148,"context_line":"              headers will HeaderKeyDict."},{"line_number":149,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_43ad0783","line":146,"updated":"2016-08-05 13:32:10.000000000","message":"nit: see above - not intuitive what type this arg should be - one might expect boolean, but turns out it must be a string","commit_id":"0d41b2326009c470f41f365c508e473ebdacb11c"}],"test/unit/common/test_direct_client.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e921ce00c140c9ce4dc662dd42c3fd2190eb35f8","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertEqual(conn.req_headers[\u0027user-agent\u0027], self.user_agent)"},{"line_number":181,"context_line":"        self.assertEqual(resp_headers, stub_headers)"},{"line_number":182,"context_line":"        self.assertEqual(json.loads(body), resp)"},{"line_number":183,"context_line":"        self.assertTrue(\u0027marker\u003dmarker\u0027 in conn.query_string)"},{"line_number":184,"context_line":"        self.assertTrue(\u0027delimiter\u003ddelimiter\u0027 in conn.query_string)"},{"line_number":185,"context_line":"        self.assertTrue(\u0027limit\u003d1000\u0027 in conn.query_string)"},{"line_number":186,"context_line":"        self.assertTrue(\u0027prefix\u003dprefix\u0027 in conn.query_string)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_a3520333","line":183,"updated":"2016-08-05 13:32:10.000000000","message":"hmm, so we have no test that marker etc. is not in the query string if it is not in the args","commit_id":"0d41b2326009c470f41f365c508e473ebdacb11c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e921ce00c140c9ce4dc662dd42c3fd2190eb35f8","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        self.assertTrue(\u0027prefix\u003dprefix\u0027 in conn.query_string)"},{"line_number":187,"context_line":"        self.assertTrue(\u0027format\u003djson\u0027 in conn.query_string)"},{"line_number":188,"context_line":"        self.assertTrue(\u0027end_marker\u003dendmarker\u0027 in conn.query_string)"},{"line_number":189,"context_line":"        self.assertTrue(\u0027reverse\u003don\u0027 in conn.query_string)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def test_direct_client_exception(self):"},{"line_number":192,"context_line":"        stub_headers \u003d {\u0027X-Trans-Id\u0027: \u0027txb5f59485c578460f8be9e-0053478d09\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_a3f6835a","line":189,"updated":"2016-08-05 13:32:10.000000000","message":"nit: self.assertIn is nicer, but this follows the existing pattern so not a blocker, the elves will clean it up one day","commit_id":"0d41b2326009c470f41f365c508e473ebdacb11c"}]}
