)]}'
{"swiftclient/client.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5786340baf09497dd3ff7e997be56c263e3aabe0","unresolved":false,"context_lines":[{"line_number":979,"context_line":"        parsed, conn \u003d http_connection(url)"},{"line_number":980,"context_line":"    path \u003d \u0027%s/%s/%s\u0027 % (parsed.path, quote(container), quote(name))"},{"line_number":981,"context_line":"    method \u003d \u0027HEAD\u0027"},{"line_number":982,"context_line":"    headers \u003d {\u0027X-Auth-Token\u0027: token}"},{"line_number":983,"context_line":"    if service_token:"},{"line_number":984,"context_line":"        headers[\u0027X-Service-Token\u0027] \u003d service_token"},{"line_number":985,"context_line":"    conn.request(method, path, \u0027\u0027, headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_b68764d6","side":"PARENT","line":982,"updated":"2015-09-15 18:56:10.000000000","message":"oh no no, this won\u0027t due - needs tests","commit_id":"26d29f5ce0a5ae661be478a202e36bf5857d5f83"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7af6a830ddcb68045d77681d541854dc4137b293","unresolved":false,"context_lines":[{"line_number":670,"context_line":"    if full_listing:"},{"line_number":671,"context_line":"        rv \u003d get_container(url, token, container, marker, limit, prefix,"},{"line_number":672,"context_line":"                           delimiter, end_marker, path, http_conn,"},{"line_number":673,"context_line":"                           service_token, headers)"},{"line_number":674,"context_line":"        listing \u003d rv[1]"},{"line_number":675,"context_line":"        while listing:"},{"line_number":676,"context_line":"            if not delimiter:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_1622d000","line":673,"updated":"2015-09-15 18:59:33.000000000","message":"I *think* you may have stumbled across and added to an existing bug, namely that service_token and now headers are being passed in a position without a keyword. Note the mapping of the params passed here to the *positions* of the expected params in get_container:\n\n  service_token -\u003e full_listing\n  headers -\u003e service_token\n\nYou can fix this for you change by simply using headers\u003dheaders.\n\nI will put together a fix for the service_token parameter separately with a bug report, it seems to make no difference once you use headers\u003dheaders","commit_id":"08a36654724e5ebee6a35ddced1885eeb15212ad"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7af6a830ddcb68045d77681d541854dc4137b293","unresolved":false,"context_lines":[{"line_number":679,"context_line":"                marker \u003d listing[-1].get(\u0027name\u0027, listing[-1].get(\u0027subdir\u0027))"},{"line_number":680,"context_line":"            listing \u003d get_container(url, token, container, marker, limit,"},{"line_number":681,"context_line":"                                    prefix, delimiter, end_marker, path,"},{"line_number":682,"context_line":"                                    http_conn, service_token, headers)[1]"},{"line_number":683,"context_line":"            if listing:"},{"line_number":684,"context_line":"                rv[1].extend(listing)"},{"line_number":685,"context_line":"        return rv"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_b639a443","line":682,"updated":"2015-09-15 18:59:33.000000000","message":"same again here","commit_id":"08a36654724e5ebee6a35ddced1885eeb15212ad"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d791648300aaa0b3ed6361ebb8940e5f1a365ca5","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                      conn object)"},{"line_number":656,"context_line":"    :param full_listing: if True, return a full listing, else returns a max"},{"line_number":657,"context_line":"                         of 10000 listings"},{"line_number":658,"context_line":"    :param service_token: service auth token"},{"line_number":659,"context_line":"    :returns: a tuple of (response headers, a list of objects) The response"},{"line_number":660,"context_line":"              headers will be a dict and all header names will be lowercase."},{"line_number":661,"context_line":"    :raises ClientException: HTTP GET request failed"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_fbdcf919","line":658,"updated":"2015-09-22 10:22:33.000000000","message":"add :param headers:","commit_id":"7cb99d3157f24e81737463302c937f1c251b7084"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d791648300aaa0b3ed6361ebb8940e5f1a365ca5","unresolved":false,"context_lines":[{"line_number":973,"context_line":"    :param name: object name to get info for"},{"line_number":974,"context_line":"    :param http_conn: HTTP connection object (If None, it will create the"},{"line_number":975,"context_line":"                      conn object)"},{"line_number":976,"context_line":"    :param service_token: service auth token"},{"line_number":977,"context_line":"    :returns: a dict containing the response\u0027s headers (all header names will"},{"line_number":978,"context_line":"              be lowercase)"},{"line_number":979,"context_line":"    :raises ClientException: HTTP HEAD request failed"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_7bf8e97c","line":976,"updated":"2015-09-22 10:22:33.000000000","message":"add :param headers:","commit_id":"7cb99d3157f24e81737463302c937f1c251b7084"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d791648300aaa0b3ed6361ebb8940e5f1a365ca5","unresolved":false,"context_lines":[{"line_number":1459,"context_line":""},{"line_number":1460,"context_line":"    def get_container(self, container, marker\u003dNone, limit\u003dNone, prefix\u003dNone,"},{"line_number":1461,"context_line":"                      delimiter\u003dNone, end_marker\u003dNone, path\u003dNone,"},{"line_number":1462,"context_line":"                      full_listing\u003dFalse, headers\u003dNone):"},{"line_number":1463,"context_line":"        \"\"\"Wrapper for :func:`get_container`\"\"\""},{"line_number":1464,"context_line":"        # TODO(unknown): With full_listing\u003dTrue this will restart the entire"},{"line_number":1465,"context_line":"        # listing with each retry. Need to make a better version that just"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_d9c9faad","line":1462,"updated":"2015-09-22 10:22:33.000000000","message":"this change is not covered by any test","commit_id":"7cb99d3157f24e81737463302c937f1c251b7084"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d791648300aaa0b3ed6361ebb8940e5f1a365ca5","unresolved":false,"context_lines":[{"line_number":1483,"context_line":"        \"\"\"Wrapper for :func:`delete_container`\"\"\""},{"line_number":1484,"context_line":"        return self._retry(None, delete_container, container,"},{"line_number":1485,"context_line":"                           response_dict\u003dresponse_dict)"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"    def head_object(self, container, obj):"},{"line_number":1488,"context_line":"        \"\"\"Wrapper for :func:`head_object`\"\"\""},{"line_number":1489,"context_line":"        return self._retry(None, head_object, container, obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_db0ed58b","line":1486,"updated":"2015-09-22 10:22:33.000000000","message":"add headers arg and pass through to module level function","commit_id":"7cb99d3157f24e81737463302c937f1c251b7084"}]}
