)]}'
{"openstack/object_store/v1/_proxy.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"f1b912f17d30bcdf2ab3ab9ff5815f3918444320","unresolved":false,"context_lines":[{"line_number":665,"context_line":"        :param container:"},{"line_number":666,"context_line":"          The value can be the name of a container or a"},{"line_number":667,"context_line":"          :class:`~openstack.object_store.v1.container.Container` instance."},{"line_number":668,"context_line":"        \"\"\""},{"line_number":669,"context_line":"        header \u003d \u0027Temp-URL-Key\u0027"},{"line_number":670,"context_line":"        if second:"},{"line_number":671,"context_line":"            header +\u003d \u0027-2\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5fc1f717_d517b0ed","line":668,"updated":"2019-03-25 19:26:53.000000000","message":"nit: document \u0027key\u0027 and \u0027second\u0027 params?","commit_id":"e5a45158722e4832cc4bc329957c04c86a6d66fc"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"abcb086c0bc6be9d3ea537d4c5674e7aad2b812c","unresolved":false,"context_lines":[{"line_number":665,"context_line":"        :param container:"},{"line_number":666,"context_line":"          The value can be the name of a container or a"},{"line_number":667,"context_line":"          :class:`~openstack.object_store.v1.container.Container` instance."},{"line_number":668,"context_line":"        \"\"\""},{"line_number":669,"context_line":"        header \u003d \u0027Temp-URL-Key\u0027"},{"line_number":670,"context_line":"        if second:"},{"line_number":671,"context_line":"            header +\u003d \u0027-2\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5fc1f717_b5bd44b8","line":668,"in_reply_to":"5fc1f717_d517b0ed","updated":"2019-03-28 07:32:35.000000000","message":"Done","commit_id":"e5a45158722e4832cc4bc329957c04c86a6d66fc"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c2ec78e67da906e1a42f6cf251daaa0c052fd647","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        if second:"},{"line_number":658,"context_line":"            header +\u003d \u0027-2\u0027"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        return self.set_account_metadata(dict(header\u003dkey))"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def set_container_temp_url_key(self, container, key, second\u003dFalse):"},{"line_number":663,"context_line":"        \"\"\"Set the Temp-URL-Key for a container."}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_42c9a956","line":660,"range":{"start_line":660,"start_character":46,"end_line":660,"end_character":52},"updated":"2019-03-26 19:45:50.000000000","message":"Isn\u0027t this going to create a dict with a literal key of \u0027header\u0027, like\n\n {\u0027header\u0027: key}\n\nwhen we want something like\n\n {header: key}\n\n?","commit_id":"38cf5dc800d1110fba1fe068bb3fac3c04668c7d"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"abcb086c0bc6be9d3ea537d4c5674e7aad2b812c","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        if second:"},{"line_number":658,"context_line":"            header +\u003d \u0027-2\u0027"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        return self.set_account_metadata(dict(header\u003dkey))"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def set_container_temp_url_key(self, container, key, second\u003dFalse):"},{"line_number":663,"context_line":"        \"\"\"Set the Temp-URL-Key for a container."}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_1f7997c3","line":660,"range":{"start_line":660,"start_character":46,"end_line":660,"end_character":52},"in_reply_to":"5fc1f717_42c9a956","updated":"2019-03-28 07:32:35.000000000","message":"Uhm. Yes. I think this is a great example of this method needing to be tested.","commit_id":"38cf5dc800d1110fba1fe068bb3fac3c04668c7d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c2ec78e67da906e1a42f6cf251daaa0c052fd647","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        if second:"},{"line_number":675,"context_line":"            header +\u003d \u0027-2\u0027"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        return self.set_container_metadata(container, dict(header\u003dkey))"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def get_temp_url_key(self, container):"},{"line_number":680,"context_line":"        \"\"\"Get the best temp url key for a given container."}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_e2f9b54d","line":677,"range":{"start_line":677,"start_character":59,"end_line":677,"end_character":65},"updated":"2019-03-26 19:45:50.000000000","message":"ditto","commit_id":"38cf5dc800d1110fba1fe068bb3fac3c04668c7d"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"abcb086c0bc6be9d3ea537d4c5674e7aad2b812c","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        if second:"},{"line_number":675,"context_line":"            header +\u003d \u0027-2\u0027"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        return self.set_container_metadata(container, dict(header\u003dkey))"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def get_temp_url_key(self, container):"},{"line_number":680,"context_line":"        \"\"\"Get the best temp url key for a given container."}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_bf4de39a","line":677,"range":{"start_line":677,"start_character":59,"end_line":677,"end_character":65},"in_reply_to":"5fc1f717_e2f9b54d","updated":"2019-03-28 07:32:35.000000000","message":"Ditto.","commit_id":"38cf5dc800d1110fba1fe068bb3fac3c04668c7d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import hmac"},{"line_number":14,"context_line":"import six"},{"line_number":15,"context_line":"from six.moves.urllib import parse"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import collections"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_488a03bf","line":16,"updated":"2019-03-28 10:41:38.000000000","message":"I\u0027m not sure why pep8 doesn\u0027t complain, but could you please order the imports the standard way?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import hmac"},{"line_number":14,"context_line":"import six"},{"line_number":15,"context_line":"from six.moves.urllib import parse"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import collections"},{"line_number":19,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_2083e7ab","line":16,"in_reply_to":"5fc1f717_488a03bf","updated":"2019-03-30 10:22:21.000000000","message":"Good catch. We have H306 excluded for hysterical raisins and just haven\u0027t fixed everything yet. We should do that.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":645,"context_line":"        \"\"\""},{"line_number":646,"context_line":"        return self._get(_info.Info)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    def set_account_temp_url_key(self, key, second\u003dFalse):"},{"line_number":649,"context_line":"        \"\"\"Set the Temp-URL-Key for the account."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"        :param key:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_68857fac","line":648,"updated":"2019-03-28 10:41:38.000000000","message":"nit: maybe \"secondary\"? I\u0027m not sure what the established terminology is here.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":645,"context_line":"        \"\"\""},{"line_number":646,"context_line":"        return self._get(_info.Info)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    def set_account_temp_url_key(self, key, second\u003dFalse):"},{"line_number":649,"context_line":"        \"\"\"Set the Temp-URL-Key for the account."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"        :param key:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_201f6771","line":648,"in_reply_to":"5fc1f717_68857fac","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        return self._get(_info.Info)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    def set_account_temp_url_key(self, key, second\u003dFalse):"},{"line_number":649,"context_line":"        \"\"\"Set the Temp-URL-Key for the account."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"        :param key:"},{"line_number":652,"context_line":"          Text of the key to use."}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_08907bec","line":649,"updated":"2019-03-28 10:41:38.000000000","message":"nit: s/Temp-URL-Key/temporary URL key/ (and below)","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        return self._get(_info.Info)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    def set_account_temp_url_key(self, key, second\u003dFalse):"},{"line_number":649,"context_line":"        \"\"\"Set the Temp-URL-Key for the account."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"        :param key:"},{"line_number":652,"context_line":"          Text of the key to use."}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_c02b0393","line":649,"in_reply_to":"5fc1f717_08907bec","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        return self.set_container_metadata(container, **{header: key})"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def get_temp_url_key(self, container):"},{"line_number":680,"context_line":"        \"\"\"Get the best temp url key for a given container."},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        Will first try to return Temp-URL-Key-2 then Temp-URL-Key for"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_288bf7bf","line":679,"updated":"2019-03-28 10:41:38.000000000","message":"maybe allow container to be None to immediately jump to the account key?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        return self.set_container_metadata(container, **{header: key})"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def get_temp_url_key(self, container):"},{"line_number":680,"context_line":"        \"\"\"Get the best temp url key for a given container."},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        Will first try to return Temp-URL-Key-2 then Temp-URL-Key for"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_80173b55","line":679,"in_reply_to":"5fc1f717_288bf7bf","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return self.set_container_metadata(container, **{header: key})"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def get_temp_url_key(self, container):"},{"line_number":680,"context_line":"        \"\"\"Get the best temp url key for a given container."},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        Will first try to return Temp-URL-Key-2 then Temp-URL-Key for"},{"line_number":683,"context_line":"        the container, and if neither exist, will attempt to return"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_c8bfd35e","line":680,"updated":"2019-03-28 10:41:38.000000000","message":"nit: temporary","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        return self.set_container_metadata(container, **{header: key})"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def get_temp_url_key(self, container):"},{"line_number":680,"context_line":"        \"\"\"Get the best temp url key for a given container."},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        Will first try to return Temp-URL-Key-2 then Temp-URL-Key for"},{"line_number":683,"context_line":"        the container, and if neither exist, will attempt to return"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_a01cb777","line":680,"in_reply_to":"5fc1f717_c8bfd35e","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        :param object_prefix:"},{"line_number":709,"context_line":"          Prefix to apply to limit all object names created using this"},{"line_number":710,"context_line":"          signature."},{"line_number":711,"context_line":"        :param redirect:"},{"line_number":712,"context_line":"          The URL to redirect the browser to after the uploads have"},{"line_number":713,"context_line":"          completed."},{"line_number":714,"context_line":"        :param max_file_size:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_e8c2cfe8","line":711,"updated":"2019-03-28 10:41:38.000000000","message":"nit: redirect_url?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":708,"context_line":"        :param object_prefix:"},{"line_number":709,"context_line":"          Prefix to apply to limit all object names created using this"},{"line_number":710,"context_line":"          signature."},{"line_number":711,"context_line":"        :param redirect:"},{"line_number":712,"context_line":"          The URL to redirect the browser to after the uploads have"},{"line_number":713,"context_line":"          completed."},{"line_number":714,"context_line":"        :param max_file_size:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_000b4b2b","line":711,"in_reply_to":"5fc1f717_e8c2cfe8","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        :param max_file_size:"},{"line_number":715,"context_line":"          The maximum file size per file uploaded."},{"line_number":716,"context_line":"        :param max_file_count:"},{"line_number":717,"context_line":"          The maximum number of uploaded files allowed."},{"line_number":718,"context_line":"        :param seconds:"},{"line_number":719,"context_line":"          The number of seconds from now to allow the form post to begin."},{"line_number":720,"context_line":"        :param key:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_88b54b80","line":717,"updated":"2019-03-28 10:41:38.000000000","message":"maybe max_upload_count?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        :param max_file_size:"},{"line_number":715,"context_line":"          The maximum file size per file uploaded."},{"line_number":716,"context_line":"        :param max_file_count:"},{"line_number":717,"context_line":"          The maximum number of uploaded files allowed."},{"line_number":718,"context_line":"        :param seconds:"},{"line_number":719,"context_line":"          The number of seconds from now to allow the form post to begin."},{"line_number":720,"context_line":"        :param key:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_9b01ee07","line":717,"in_reply_to":"5fc1f717_88b54b80","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":715,"context_line":"          The maximum file size per file uploaded."},{"line_number":716,"context_line":"        :param max_file_count:"},{"line_number":717,"context_line":"          The maximum number of uploaded files allowed."},{"line_number":718,"context_line":"        :param seconds:"},{"line_number":719,"context_line":"          The number of seconds from now to allow the form post to begin."},{"line_number":720,"context_line":"        :param key:"},{"line_number":721,"context_line":"          The X-Account-Meta-Temp-URL-Key for the account. Optional, if"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_a8b84774","line":718,"updated":"2019-03-28 10:41:38.000000000","message":"s/seconds/timeout/ or expiration?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":715,"context_line":"          The maximum file size per file uploaded."},{"line_number":716,"context_line":"        :param max_file_count:"},{"line_number":717,"context_line":"          The maximum number of uploaded files allowed."},{"line_number":718,"context_line":"        :param seconds:"},{"line_number":719,"context_line":"          The number of seconds from now to allow the form post to begin."},{"line_number":720,"context_line":"        :param key:"},{"line_number":721,"context_line":"          The X-Account-Meta-Temp-URL-Key for the account. Optional, if"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_5b0b8623","line":718,"in_reply_to":"5fc1f717_a8b84774","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":717,"context_line":"          The maximum number of uploaded files allowed."},{"line_number":718,"context_line":"        :param seconds:"},{"line_number":719,"context_line":"          The number of seconds from now to allow the form post to begin."},{"line_number":720,"context_line":"        :param key:"},{"line_number":721,"context_line":"          The X-Account-Meta-Temp-URL-Key for the account. Optional, if"},{"line_number":722,"context_line":"          omitted, the key will be fetched from the container or the account."},{"line_number":723,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_48b3e398","line":720,"updated":"2019-03-28 10:41:38.000000000","message":"nit: temp_url_key to match the other methods?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        max_file_size \u003d int(max_file_size)"},{"line_number":725,"context_line":"        if max_file_size \u003c 1:"},{"line_number":726,"context_line":"            raise exceptions.SDKException("},{"line_number":727,"context_line":"                \u0027Please use a positive max_file_size value.\u0027)"},{"line_number":728,"context_line":"        max_file_count \u003d int(max_file_count)"},{"line_number":729,"context_line":"        if max_file_count \u003c 1:"},{"line_number":730,"context_line":"            raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_68aedf2e","line":727,"updated":"2019-03-28 10:41:38.000000000","message":"nit: non-negative (since you accept zero)","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9864c132b71022f0a46288dd42cc8b3551f87ba5","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        max_file_size \u003d int(max_file_size)"},{"line_number":725,"context_line":"        if max_file_size \u003c 1:"},{"line_number":726,"context_line":"            raise exceptions.SDKException("},{"line_number":727,"context_line":"                \u0027Please use a positive max_file_size value.\u0027)"},{"line_number":728,"context_line":"        max_file_count \u003d int(max_file_count)"},{"line_number":729,"context_line":"        if max_file_count \u003c 1:"},{"line_number":730,"context_line":"            raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_c7501935","line":727,"in_reply_to":"5fc1f717_68aedf2e","updated":"2019-03-28 17:44:29.000000000","message":"Does it accept zero? Since we compare \u0027\u003c 1\u0027, it doesn\u0027t seem like it does...","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        max_file_size \u003d int(max_file_size)"},{"line_number":725,"context_line":"        if max_file_size \u003c 1:"},{"line_number":726,"context_line":"            raise exceptions.SDKException("},{"line_number":727,"context_line":"                \u0027Please use a positive max_file_size value.\u0027)"},{"line_number":728,"context_line":"        max_file_count \u003d int(max_file_count)"},{"line_number":729,"context_line":"        if max_file_count \u003c 1:"},{"line_number":730,"context_line":"            raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_7b2522ae","line":727,"in_reply_to":"5fc1f717_c7501935","updated":"2019-03-30 10:22:21.000000000","message":"Tim is right - we don\u0027t accept 0.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        max_file_count \u003d int(max_file_count)"},{"line_number":729,"context_line":"        if max_file_count \u003c 1:"},{"line_number":730,"context_line":"            raise exceptions.SDKException("},{"line_number":731,"context_line":"                \u0027Please use a positive max_file_count value.\u0027)"},{"line_number":732,"context_line":"        try:"},{"line_number":733,"context_line":"            expires \u003d int(time.time() + int(seconds))"},{"line_number":734,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_08a95b22","line":731,"updated":"2019-03-28 10:41:38.000000000","message":"ditto","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        max_file_count \u003d int(max_file_count)"},{"line_number":729,"context_line":"        if max_file_count \u003c 1:"},{"line_number":730,"context_line":"            raise exceptions.SDKException("},{"line_number":731,"context_line":"                \u0027Please use a positive max_file_count value.\u0027)"},{"line_number":732,"context_line":"        try:"},{"line_number":733,"context_line":"            expires \u003d int(time.time() + int(seconds))"},{"line_number":734,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_9b2a4e7c","line":731,"in_reply_to":"5fc1f717_08a95b22","updated":"2019-03-30 10:22:21.000000000","message":"Same.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        try:"},{"line_number":733,"context_line":"            expires \u003d int(time.time() + int(seconds))"},{"line_number":734,"context_line":"        except ValueError:"},{"line_number":735,"context_line":"            expires \u003d 0"},{"line_number":736,"context_line":"        if expires \u003c 1:"},{"line_number":737,"context_line":"            raise exceptions.SDKException("},{"line_number":738,"context_line":"                \u0027Please use a positive \u003cseconds\u003e value.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_28a4574a","line":735,"updated":"2019-03-28 10:41:38.000000000","message":"Shouldn\u0027t it be an error? What case are you addressing here at all?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        try:"},{"line_number":733,"context_line":"            expires \u003d int(time.time() + int(seconds))"},{"line_number":734,"context_line":"        except ValueError:"},{"line_number":735,"context_line":"            expires \u003d 0"},{"line_number":736,"context_line":"        if expires \u003c 1:"},{"line_number":737,"context_line":"            raise exceptions.SDKException("},{"line_number":738,"context_line":"                \u0027Please use a positive \u003cseconds\u003e value.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_3b1f9a5c","line":735,"in_reply_to":"5fc1f717_28a4574a","updated":"2019-03-30 10:22:21.000000000","message":"Yeah. I think you\u0027re right.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":735,"context_line":"            expires \u003d 0"},{"line_number":736,"context_line":"        if expires \u003c 1:"},{"line_number":737,"context_line":"            raise exceptions.SDKException("},{"line_number":738,"context_line":"                \u0027Please use a positive \u003cseconds\u003e value.\u0027)"},{"line_number":739,"context_line":"        key \u003d key or self.get_temp_url_key(container)"},{"line_number":740,"context_line":"        if not key:"},{"line_number":741,"context_line":"            raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_c864b324","line":738,"updated":"2019-03-28 10:41:38.000000000","message":"You should check seconds, not expires. Expires will only be negative if seconds is really low","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":735,"context_line":"            expires \u003d 0"},{"line_number":736,"context_line":"        if expires \u003c 1:"},{"line_number":737,"context_line":"            raise exceptions.SDKException("},{"line_number":738,"context_line":"                \u0027Please use a positive \u003cseconds\u003e value.\u0027)"},{"line_number":739,"context_line":"        key \u003d key or self.get_temp_url_key(container)"},{"line_number":740,"context_line":"        if not key:"},{"line_number":741,"context_line":"            raise exceptions.SDKException("}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_5b24e6af","line":738,"in_reply_to":"5fc1f717_c864b324","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        if not key:"},{"line_number":741,"context_line":"            raise exceptions.SDKException("},{"line_number":742,"context_line":"                \u0027key was not given, nor was a key found for the account\u0027"},{"line_number":743,"context_line":"                \u0027 or the container.\u0027)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        res \u003d self._get_resource(_container.Container, container)"},{"line_number":746,"context_line":"        endpoint \u003d parse.urlparse(self.get_endpoint())"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_e8672f24","line":743,"updated":"2019-03-28 10:41:38.000000000","message":"nit: maybe create a key?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        if not key:"},{"line_number":741,"context_line":"            raise exceptions.SDKException("},{"line_number":742,"context_line":"                \u0027key was not given, nor was a key found for the account\u0027"},{"line_number":743,"context_line":"                \u0027 or the container.\u0027)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        res \u003d self._get_resource(_container.Container, container)"},{"line_number":746,"context_line":"        endpoint \u003d parse.urlparse(self.get_endpoint())"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_fb3832d5","line":743,"in_reply_to":"5fc1f717_677044a5","updated":"2019-03-30 10:22:21.000000000","message":"Yeah - agree with Tim.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9864c132b71022f0a46288dd42cc8b3551f87ba5","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        if not key:"},{"line_number":741,"context_line":"            raise exceptions.SDKException("},{"line_number":742,"context_line":"                \u0027key was not given, nor was a key found for the account\u0027"},{"line_number":743,"context_line":"                \u0027 or the container.\u0027)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        res \u003d self._get_resource(_container.Container, container)"},{"line_number":746,"context_line":"        endpoint \u003d parse.urlparse(self.get_endpoint())"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_677044a5","line":743,"in_reply_to":"5fc1f717_e8672f24","updated":"2019-03-28 17:44:29.000000000","message":"If it were me, I\u0027d hesitate to do that -- currently, this function only does read operations. If the user provides the key, it\u0027s not clear to me that we need to contact Swift at all.\n\nMaking this sometimes have side-effects where we write to Swift seems weird.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        data \u003d \u0027%s\\n%s\\n%s\\n%s\\n%s\u0027 % (path, redirect, max_file_size,"},{"line_number":750,"context_line":"                                       max_file_count, expires)"},{"line_number":751,"context_line":"        if six.PY3:"},{"line_number":752,"context_line":"            data \u003d data if isinstance(data, six.binary_type) else \\"},{"line_number":753,"context_line":"                data.encode(\u0027utf8\u0027)"},{"line_number":754,"context_line":"            key \u003d key if isinstance(key, six.binary_type) else \\"},{"line_number":755,"context_line":"                key.encode(\u0027utf8\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_886a2bea","line":752,"updated":"2019-03-28 10:41:38.000000000","message":"why should data ever be six.binary_type under python 3 if it\u0027s built from a string pattern?","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        data \u003d \u0027%s\\n%s\\n%s\\n%s\\n%s\u0027 % (path, redirect, max_file_size,"},{"line_number":750,"context_line":"                                       max_file_count, expires)"},{"line_number":751,"context_line":"        if six.PY3:"},{"line_number":752,"context_line":"            data \u003d data if isinstance(data, six.binary_type) else \\"},{"line_number":753,"context_line":"                data.encode(\u0027utf8\u0027)"},{"line_number":754,"context_line":"            key \u003d key if isinstance(key, six.binary_type) else \\"},{"line_number":755,"context_line":"                key.encode(\u0027utf8\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_fb3d92bc","line":752,"in_reply_to":"5fc1f717_886a2bea","updated":"2019-03-30 10:22:21.000000000","message":"Good point.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        if six.PY3:"},{"line_number":752,"context_line":"            data \u003d data if isinstance(data, six.binary_type) else \\"},{"line_number":753,"context_line":"                data.encode(\u0027utf8\u0027)"},{"line_number":754,"context_line":"            key \u003d key if isinstance(key, six.binary_type) else \\"},{"line_number":755,"context_line":"                key.encode(\u0027utf8\u0027)"},{"line_number":756,"context_line":"        sig \u003d hmac.new(key, data, sha1).hexdigest()"},{"line_number":757,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_a86da703","line":754,"updated":"2019-03-28 10:41:38.000000000","message":"This is worrying. Let us make sure that get_temp_url_key returns a string under all versions rather than having this check here","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        if six.PY3:"},{"line_number":752,"context_line":"            data \u003d data if isinstance(data, six.binary_type) else \\"},{"line_number":753,"context_line":"                data.encode(\u0027utf8\u0027)"},{"line_number":754,"context_line":"            key \u003d key if isinstance(key, six.binary_type) else \\"},{"line_number":755,"context_line":"                key.encode(\u0027utf8\u0027)"},{"line_number":756,"context_line":"        sig \u003d hmac.new(key, data, sha1).hexdigest()"},{"line_number":757,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_5b594633","line":754,"in_reply_to":"5fc1f717_873bf1e7","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9864c132b71022f0a46288dd42cc8b3551f87ba5","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        if six.PY3:"},{"line_number":752,"context_line":"            data \u003d data if isinstance(data, six.binary_type) else \\"},{"line_number":753,"context_line":"                data.encode(\u0027utf8\u0027)"},{"line_number":754,"context_line":"            key \u003d key if isinstance(key, six.binary_type) else \\"},{"line_number":755,"context_line":"                key.encode(\u0027utf8\u0027)"},{"line_number":756,"context_line":"        sig \u003d hmac.new(key, data, sha1).hexdigest()"},{"line_number":757,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_873bf1e7","line":754,"in_reply_to":"5fc1f717_a86da703","updated":"2019-03-28 17:44:29.000000000","message":"What if key was provided by the user? Maybe that should be handled up when we validate that we have a key, though, with something like\n\n if key:\n     if not isinstance(key, bytes):\n         key \u003d key.encode(\u0027utf8\u0027)\n else:\n     key \u003d self.get_temp_url_key(container)\n     if not key:\n         raise ...","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"}],"openstack/object_store/v1/container.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    if_none_match \u003d resource.Header(\"if-none-match\")"},{"line_number":101,"context_line":"    #: The secret key value for temporary URLs. If not set,"},{"line_number":102,"context_line":"    #: this header is not returned by this operation."},{"line_number":103,"context_line":"    meta_temp_url_key \u003d resource.Header(\"x-container-meta-temp-url-key\")"},{"line_number":104,"context_line":"    #: A second secret key value for temporary URLs. If not set,"},{"line_number":105,"context_line":"    #: this header is not returned by this operation."},{"line_number":106,"context_line":"    meta_temp_url_key_2 \u003d resource.Header(\"x-container-meta-temp-url-key-2\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_e8996f1e","line":103,"updated":"2019-03-28 10:41:38.000000000","message":"nit: I\u0027d remove \"meta_\", doesn\u0027t look useful","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    if_none_match \u003d resource.Header(\"if-none-match\")"},{"line_number":101,"context_line":"    #: The secret key value for temporary URLs. If not set,"},{"line_number":102,"context_line":"    #: this header is not returned by this operation."},{"line_number":103,"context_line":"    meta_temp_url_key \u003d resource.Header(\"x-container-meta-temp-url-key\")"},{"line_number":104,"context_line":"    #: A second secret key value for temporary URLs. If not set,"},{"line_number":105,"context_line":"    #: this header is not returned by this operation."},{"line_number":106,"context_line":"    meta_temp_url_key_2 \u003d resource.Header(\"x-container-meta-temp-url-key-2\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_7b73e2b5","line":103,"in_reply_to":"5fc1f717_e8996f1e","updated":"2019-03-30 10:22:21.000000000","message":"Yeah - I like it without meta_ much better ... but it already existed on the Account resource with meta, so I figured having them match would be better.","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    meta_temp_url_key \u003d resource.Header(\"x-container-meta-temp-url-key\")"},{"line_number":104,"context_line":"    #: A second secret key value for temporary URLs. If not set,"},{"line_number":105,"context_line":"    #: this header is not returned by this operation."},{"line_number":106,"context_line":"    meta_temp_url_key_2 \u003d resource.Header(\"x-container-meta-temp-url-key-2\")"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @classmethod"},{"line_number":109,"context_line":"    def new(cls, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_889c6b0e","line":106,"updated":"2019-03-28 10:41:38.000000000","message":"ditto","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"}],"openstack/tests/unit/cloud/test_object.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b154664cc0eb73f356754bc61022606390630a6","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            exc.OpenStackCloudException, self.cloud.list_containers)"},{"line_number":267,"context_line":"        self.assert_calls()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @mock.patch(\u0027time.time\u0027)"},{"line_number":270,"context_line":"    def test_generate_form_signature_container_key(self, mock_time):"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        mock_time.return_value \u003d 12345"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_a89fe7ff","line":269,"updated":"2019-03-28 10:41:38.000000000","message":"nit: autospec\u003dTrue (and below)","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58c064757d2b4cc898de4373a3438945d9112d18","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            exc.OpenStackCloudException, self.cloud.list_containers)"},{"line_number":267,"context_line":"        self.assert_calls()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @mock.patch(\u0027time.time\u0027)"},{"line_number":270,"context_line":"    def test_generate_form_signature_container_key(self, mock_time):"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        mock_time.return_value \u003d 12345"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_db44564a","line":269,"in_reply_to":"5fc1f717_a89fe7ff","updated":"2019-03-30 10:22:21.000000000","message":"Done","commit_id":"16da940cf5170da23fb0770f722f1368688485c0"}]}
