)]}'
{"zuul_registry/filesystem.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"8328ac674757d0dec5eb510917812f571a321fa8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                for chunk in data:"},{"line_number":51,"context_line":"                    f.write(chunk)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def get_object(self, path, stream\u003dFalse):"},{"line_number":54,"context_line":"        path \u003d os.path.join(self.root, path)"},{"line_number":55,"context_line":"        if not os.path.exists(path):"},{"line_number":56,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f9f33472","line":53,"range":{"start_line":53,"start_character":30,"end_line":53,"end_character":43},"updated":"2019-10-03 17:36:36.000000000","message":"???","commit_id":"32169eeabc4b5b13ffa5012e3ab449e288e2841d"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"fe1b243ffd7d28bc0fac6c1e8c4276dbebd689a3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def stream_object(self, path):"},{"line_number":61,"context_line":"        path \u003d os.path.join(self.root, path)"},{"line_number":62,"context_line":"        if not os.path.exists(path):"},{"line_number":63,"context_line":"            return None"},{"line_number":64,"context_line":"        with open(path, \u0027rb\u0027) as f:"},{"line_number":65,"context_line":"            while True:"},{"line_number":66,"context_line":"                chunk \u003d f.read(4096)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b47381b1","line":63,"range":{"start_line":63,"start_character":12,"end_line":63,"end_character":23},"updated":"2019-10-03 17:54:59.000000000","message":"Is None the thing we should return here, or would it be better to raise cherrypy.NotFound()?","commit_id":"61af2796b2c5eaf12cf97333e1f9ce4526fe98c6"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"d6be0c244a3771b52d75224b75f730d4da568627","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def stream_object(self, path):"},{"line_number":61,"context_line":"        path \u003d os.path.join(self.root, path)"},{"line_number":62,"context_line":"        if not os.path.exists(path):"},{"line_number":63,"context_line":"            return None"},{"line_number":64,"context_line":"        with open(path, \u0027rb\u0027) as f:"},{"line_number":65,"context_line":"            while True:"},{"line_number":66,"context_line":"                chunk \u003d f.read(4096)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f4d57944","line":63,"updated":"2019-10-03 18:00:27.000000000","message":"This is low-level and doesn\u0027t know it\u0027s in cherrypy.  This won\u0027t ever actually get used, because we call \"get_object_size\" first.  That also returns None on not-found, so this matches that api.  The cherrypy application in main.py checks for None from the size call and raises notfound in that case.","commit_id":"61af2796b2c5eaf12cf97333e1f9ce4526fe98c6"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"889adbda08c7b8fdac4d1d94a4f4c5e377341151","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def stream_object(self, path):"},{"line_number":61,"context_line":"        path \u003d os.path.join(self.root, path)"},{"line_number":62,"context_line":"        if not os.path.exists(path):"},{"line_number":63,"context_line":"            return None"},{"line_number":64,"context_line":"        with open(path, \u0027rb\u0027) as f:"},{"line_number":65,"context_line":"            while True:"},{"line_number":66,"context_line":"                chunk \u003d f.read(4096)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b42b812e","line":63,"in_reply_to":"3fa7e38b_f4d57944","updated":"2019-10-03 18:08:47.000000000","message":"Ah, I see that now. Excellent.","commit_id":"61af2796b2c5eaf12cf97333e1f9ce4526fe98c6"}],"zuul_registry/swift.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"fe1b243ffd7d28bc0fac6c1e8c4276dbebd689a3","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            ret \u003d retry_function("},{"line_number":126,"context_line":"                lambda: self.conn.session.get(self.get_url(path), stream\u003dTrue))"},{"line_number":127,"context_line":"        except keystoneauth1.exceptions.http.NotFound:"},{"line_number":128,"context_line":"            return None"},{"line_number":129,"context_line":"        return ret.iter_content(chunk_size\u003d4096)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def delete_object(self, path):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_146295d9","line":128,"range":{"start_line":128,"start_character":12,"end_line":128,"end_character":23},"updated":"2019-10-03 17:54:59.000000000","message":"Ditto the question re: None vs. NotFound()","commit_id":"61af2796b2c5eaf12cf97333e1f9ce4526fe98c6"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"d6be0c244a3771b52d75224b75f730d4da568627","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            ret \u003d retry_function("},{"line_number":126,"context_line":"                lambda: self.conn.session.get(self.get_url(path), stream\u003dTrue))"},{"line_number":127,"context_line":"        except keystoneauth1.exceptions.http.NotFound:"},{"line_number":128,"context_line":"            return None"},{"line_number":129,"context_line":"        return ret.iter_content(chunk_size\u003d4096)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def delete_object(self, path):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_94ca059f","line":128,"updated":"2019-10-03 18:00:27.000000000","message":"Same answer.","commit_id":"61af2796b2c5eaf12cf97333e1f9ce4526fe98c6"}]}
