)]}'
{"swift/common/middleware/staticweb.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a175fc4193c79ef990b57e512cc76f7c247a31d9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    the WSGI env."},{"line_number":149,"context_line":"    \"\"\""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def __init__(self, staticweb, version, account, container, obj):"},{"line_number":152,"context_line":"        WSGIContext.__init__(self, staticweb.app)"},{"line_number":153,"context_line":"        self.version \u003d version"},{"line_number":154,"context_line":"        self.account \u003d account"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_8c858809","line":151,"range":{"start_line":151,"start_character":43,"end_line":151,"end_character":66},"updated":"2019-03-26 18:55:02.000000000","message":"So, should these be native strings or wsgi strings? That should help answer whether we want quote or wsgi_quote below... it looks like they\u0027re wsgi strings currently, but it might be worth noting in the docstring.","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"0a2f8e636a52951c0c94b6ff2b4610e6680922c6","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    the WSGI env."},{"line_number":149,"context_line":"    \"\"\""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def __init__(self, staticweb, version, account, container, obj):"},{"line_number":152,"context_line":"        WSGIContext.__init__(self, staticweb.app)"},{"line_number":153,"context_line":"        self.version \u003d version"},{"line_number":154,"context_line":"        self.account \u003d account"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_09d73325","line":151,"range":{"start_line":151,"start_character":43,"end_line":151,"end_character":66},"in_reply_to":"5fc1f717_8c858809","updated":"2019-04-10 06:58:04.000000000","message":"Done","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f4b034da3a4021d21210ef9e683937c892968250","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                        \u0027   \u003c/tr\u003e\\n\u0027 % \\"},{"line_number":341,"context_line":"                        (\u0027 \u0027.join(\u0027type-\u0027 + cgi.escape(t.lower(), quote\u003dTrue)"},{"line_number":342,"context_line":"                                  for t in content_type.split(\u0027/\u0027)),"},{"line_number":343,"context_line":"                         quote(name), cgi.escape(name),"},{"line_number":344,"context_line":"                         bytes, last_modified)"},{"line_number":345,"context_line":"        body +\u003d \u0027  \u003c/table\u003e\\n\u0027 \\"},{"line_number":346,"context_line":"                \u0027 \u003c/body\u003e\\n\u0027 \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_d5e794ab","line":343,"range":{"start_line":343,"start_character":25,"end_line":343,"end_character":30},"updated":"2019-03-26 20:51:28.000000000","message":"These quotes make me a little nervous, but I can\u0027t quite put my finger on how it would go wrong... name should always be UTF-8-encodable...","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"0a2f8e636a52951c0c94b6ff2b4610e6680922c6","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                        \u0027   \u003c/tr\u003e\\n\u0027 % \\"},{"line_number":341,"context_line":"                        (\u0027 \u0027.join(\u0027type-\u0027 + cgi.escape(t.lower(), quote\u003dTrue)"},{"line_number":342,"context_line":"                                  for t in content_type.split(\u0027/\u0027)),"},{"line_number":343,"context_line":"                         quote(name), cgi.escape(name),"},{"line_number":344,"context_line":"                         bytes, last_modified)"},{"line_number":345,"context_line":"        body +\u003d \u0027  \u003c/table\u003e\\n\u0027 \\"},{"line_number":346,"context_line":"                \u0027 \u003c/body\u003e\\n\u0027 \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_a9a7ffbb","line":343,"range":{"start_line":343,"start_character":25,"end_line":343,"end_character":30},"in_reply_to":"5fc1f717_d5e794ab","updated":"2019-04-10 06:58:04.000000000","message":"Yeah, this should be the container name and it\u0027s coming from a response bocy (json) so isn\u0027t a wsgi string. So I think it\u0027s ok.","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ad8d61f2783ec0a556c5764ecce9cd53eb4371fa","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                        self.version, self.account, self.container),"},{"line_number":473,"context_line":"                    self.agent, swift_source\u003d\u0027SW\u0027)"},{"line_number":474,"context_line":"                tmp_env[\u0027QUERY_STRING\u0027] \u003d \u0027limit\u003d1\u0026delimiter\u003d/\u0026prefix\u003d%s\u0027 % ("},{"line_number":475,"context_line":"                    wsgi_quote(self.obj + \u0027/\u0027), )"},{"line_number":476,"context_line":"                resp \u003d self._app_call(tmp_env)"},{"line_number":477,"context_line":"                body \u003d b\u0027\u0027.join(resp)"},{"line_number":478,"context_line":"                if not is_success(self._get_status_int()) or not body or \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_abca2e4c","line":475,"updated":"2019-03-21 03:40:50.000000000","message":"This can\u0027t be right. The swift.common.utils.quote is fundamentally different from the urllib.parse.quote, so this replacement is highly suspicious.","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f4b034da3a4021d21210ef9e683937c892968250","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                        self.version, self.account, self.container),"},{"line_number":473,"context_line":"                    self.agent, swift_source\u003d\u0027SW\u0027)"},{"line_number":474,"context_line":"                tmp_env[\u0027QUERY_STRING\u0027] \u003d \u0027limit\u003d1\u0026delimiter\u003d/\u0026prefix\u003d%s\u0027 % ("},{"line_number":475,"context_line":"                    wsgi_quote(self.obj + \u0027/\u0027), )"},{"line_number":476,"context_line":"                resp \u003d self._app_call(tmp_env)"},{"line_number":477,"context_line":"                body \u003d b\u0027\u0027.join(resp)"},{"line_number":478,"context_line":"                if not is_success(self._get_status_int()) or not body or \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_bd0bd08b","line":475,"in_reply_to":"5fc1f717_abca2e4c","updated":"2019-03-26 20:51:28.000000000","message":"They do remarkably similar things on py2 -- I think this might actually be right.","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"0a2f8e636a52951c0c94b6ff2b4610e6680922c6","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                        self.version, self.account, self.container),"},{"line_number":473,"context_line":"                    self.agent, swift_source\u003d\u0027SW\u0027)"},{"line_number":474,"context_line":"                tmp_env[\u0027QUERY_STRING\u0027] \u003d \u0027limit\u003d1\u0026delimiter\u003d/\u0026prefix\u003d%s\u0027 % ("},{"line_number":475,"context_line":"                    wsgi_quote(self.obj + \u0027/\u0027), )"},{"line_number":476,"context_line":"                resp \u003d self._app_call(tmp_env)"},{"line_number":477,"context_line":"                body \u003d b\u0027\u0027.join(resp)"},{"line_number":478,"context_line":"                if not is_success(self._get_status_int()) or not body or \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_a9805ff8","line":475,"in_reply_to":"5fc1f717_bd0bd08b","updated":"2019-04-10 06:58:04.000000000","message":"I guess the other option would be to:\n\n   quote(wsgi_to_str(self.obj) + \u0027/\u0027))\n\nSo we\u0027re dealing with a normal native string. I can give it a go at least.","commit_id":"b5ab8e7d50b973b9d193619e5b1f9ec77a9cf3bd"}],"tox.ini":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fff109c4515826f75af017c1721ac16f55d71428","unresolved":false,"context_lines":[{"line_number":58,"context_line":"      test/unit/common/middleware/test_read_only.py \\"},{"line_number":59,"context_line":"      test/unit/common/middleware/test_recon.py \\"},{"line_number":60,"context_line":"      test/unit/common/middleware/test_subrequest_logging.py \\"},{"line_number":61,"context_line":"      test/unit/common/middleware/test/staticweb.py \\"},{"line_number":62,"context_line":"      test/unit/common/middleware/test_tempauth.py \\"},{"line_number":63,"context_line":"      test/unit/common/middleware/test_versioned_writes.py \\"},{"line_number":64,"context_line":"      test/unit/common/middleware/test_xprofile.py \\"}],"source_content_type":"text/x-properties","patch_set":1,"id":"5fc1f717_ad7b5dbc","line":61,"range":{"start_line":61,"start_character":38,"end_line":61,"end_character":39},"updated":"2019-03-18 23:30:25.000000000","message":"s!test/staticweb!test_staticweb!\n\n;-)","commit_id":"b6005a04ab15d0a5d56e7fa3b55bb8b0b956ca40"}]}
