)]}'
{"swift/common/wsgi.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c24af98abed0d1c6ea9acbf2068411fd6206893a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.context \u003d context"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _mod_name(self, ctx):"},{"line_number":210,"context_line":"        return inspect.getmodule(ctx.object).__name__"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _find(self, module_name):"},{"line_number":213,"context_line":"        filt \u003d lambda x: self._mod_name(x) \u003d\u003d module_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9Nks%3D","line":210,"updated":"2013-12-14 00:12:37.000000000","message":"so... these ctx objects have an entry_point_name attribute that exactly matches what you send into create_filter.  For reasons I think it\u0027d be at least as good if not better to just use that than relying on the module path that an entrypoint happens to be exposed at (they could change).  Also, I think we might have a module with multiple filter_factory functions listed in setup.cfg pretty easily - but swift can never expose to filters/middlewares with the same entry_point_name.","commit_id":"01ccdba51bd482e09f800102f272503baf6f8754"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"f77b9b28789bd28f8bd44c6c8f9f91249252dc28","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        app \u003d ctx.app_context.create()"},{"line_number":281,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":282,"context_line":"        if func:"},{"line_number":283,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":284,"context_line":"    return ctx.create()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9Nek%3D","line":283,"updated":"2013-12-14 00:58:21.000000000","message":"I think a debug message that states wtf the pipeline is would be boss.  Can you steal the .logger attribute off app - or is that too convention heavy?","commit_id":"3e03ad16d48772ffacfa07de655692b7af8db6f5"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"b0afe2ed7efbd2a1da9e31bbad419f1a03d09e6e","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        app \u003d ctx.app_context.create()"},{"line_number":281,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":282,"context_line":"        if func:"},{"line_number":283,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":284,"context_line":"    return ctx.create()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9NZ0%3D","line":283,"in_reply_to":"AAAATn%2F9Nek%3D","updated":"2013-12-14 01:37:08.000000000","message":"I can do that pretty easily in the proxy server\u0027s modify_wsgi_pipeline() method; I\u0027ve got a logger there.","commit_id":"3e03ad16d48772ffacfa07de655692b7af8db6f5"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"91ff768b114656bf010f51a7302440ba45d978ec","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    def __init__(self, context):"},{"line_number":207,"context_line":"        self.context \u003d context"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _find(self, entry_point_name):"},{"line_number":210,"context_line":"        return [mod for mod in self.context.filter_contexts"},{"line_number":211,"context_line":"                if mod.entry_point_name \u003d\u003d entry_point_name]"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9LoQ%3D","line":209,"updated":"2013-12-15 14:26:13.000000000","message":"Is this function used?","commit_id":"6ce6f26a74012995e6953e5aafe49c58a77c3633"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"7da5ae9aa4bc25c64dc4b47dbca7f959631e61d0","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    def __init__(self, context):"},{"line_number":207,"context_line":"        self.context \u003d context"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _find(self, entry_point_name):"},{"line_number":210,"context_line":"        return [mod for mod in self.context.filter_contexts"},{"line_number":211,"context_line":"                if mod.entry_point_name \u003d\u003d entry_point_name]"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9LSA%3D","line":209,"in_reply_to":"AAAATn%2F9LoQ%3D","updated":"2013-12-15 20:03:05.000000000","message":"Guess not.","commit_id":"6ce6f26a74012995e6953e5aafe49c58a77c3633"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"91ff768b114656bf010f51a7302440ba45d978ec","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                              ctx.object.__name__)"},{"line_number":238,"context_line":"        else:"},{"line_number":239,"context_line":"            # No idea what this is"},{"line_number":240,"context_line":"            return \"\u003cunknown context\u003e\""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def __str__(self):"},{"line_number":243,"context_line":"        parts \u003d [self._format_for_display(ctx)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9LoM%3D","line":240,"updated":"2013-12-15 14:26:13.000000000","message":"Can you add a unit test that hits this code path?","commit_id":"6ce6f26a74012995e6953e5aafe49c58a77c3633"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"7da5ae9aa4bc25c64dc4b47dbca7f959631e61d0","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                              ctx.object.__name__)"},{"line_number":238,"context_line":"        else:"},{"line_number":239,"context_line":"            # No idea what this is"},{"line_number":240,"context_line":"            return \"\u003cunknown context\u003e\""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def __str__(self):"},{"line_number":243,"context_line":"        parts \u003d [self._format_for_display(ctx)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9LR8%3D","line":240,"in_reply_to":"AAAATn%2F9LoM%3D","updated":"2013-12-15 20:03:05.000000000","message":"I can try. I can\u0027t promise it\u0027s representative of anything in PasteDeploy, though, since as soon as I figure out how to get something else in there for real, I can figure out how to print it. :)","commit_id":"6ce6f26a74012995e6953e5aafe49c58a77c3633"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"aaa5eeed8058459989d14008bc4302f0f033a39b","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        parts.append(self._format_for_display(self.context.app_context))"},{"line_number":242,"context_line":"        return \" \".join(parts)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def entry_point_names(self):"},{"line_number":245,"context_line":"        \"\"\""},{"line_number":246,"context_line":"        Returns a list of the entry point names for the filters specified"},{"line_number":247,"context_line":"        by the pipeline context."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9GNQ%3D","line":244,"updated":"2013-12-16 20:36:22.000000000","message":"This looks like a helper for unit tests. It seems simple enough for the unit tests to just call perform it directly, or make it a method in the test harness itself.\n\nAlternatively, adding an underscore would also indicate it is not part of the interface that is in use.","commit_id":"d0cc4fc39e15253c9b23be3a143b7ef34ee4c440"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"5dc55e2b0a87bad2093a99bc647c1b94e4cbe5f9","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        parts.append(self._format_for_display(self.context.app_context))"},{"line_number":242,"context_line":"        return \" \".join(parts)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def entry_point_names(self):"},{"line_number":245,"context_line":"        \"\"\""},{"line_number":246,"context_line":"        Returns a list of the entry point names for the filters specified"},{"line_number":247,"context_line":"        by the pipeline context."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9GIc%3D","line":244,"in_reply_to":"AAAATn%2F9GNQ%3D","updated":"2013-12-16 20:53:34.000000000","message":"Moved to test helper method.","commit_id":"d0cc4fc39e15253c9b23be3a143b7ef34ee4c440"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"aaa5eeed8058459989d14008bc4302f0f033a39b","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                return i"},{"line_number":275,"context_line":"        raise ValueError(\"%s is not in pipeline\" % (entry_point_name,))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def insert_filter(self, ctx, index\u003d0):"},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":"        Inserts a filter module into the pipeline context."},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9GM8%3D","line":277,"updated":"2013-12-16 20:36:22.000000000","message":"Is there a case where a WSGI app would already have a filter created?\n\nIt seems like this method could be merged with create_filter() since they are always called together and there does not seem to be a value to having one without the other in the wild (perhaps for unit tests though ... maybe?).","commit_id":"d0cc4fc39e15253c9b23be3a143b7ef34ee4c440"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"5dc55e2b0a87bad2093a99bc647c1b94e4cbe5f9","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                return i"},{"line_number":275,"context_line":"        raise ValueError(\"%s is not in pipeline\" % (entry_point_name,))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def insert_filter(self, ctx, index\u003d0):"},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":"        Inserts a filter module into the pipeline context."},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9GJQ%3D","line":277,"in_reply_to":"AAAATn%2F9GM8%3D","updated":"2013-12-16 20:53:34.000000000","message":"Originally, this was split because of filter moving.\n\nThe old remove_filter method (now deceased) would return the context object that it pulled out of the pipeline, so if one wanted to move a filter, one could e.g. \n\n    pipe.insert_filter(pipe.remove_filter(\"thingy\"), index\u003d4)\n\nI don\u0027t mind taking it out eventually, but since I expect someone to propose a change that moves middlewares to the right places, I\u0027d prefer to leave this for now.","commit_id":"d0cc4fc39e15253c9b23be3a143b7ef34ee4c440"}],"swift/proxy/server.py":[{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"91ff768b114656bf010f51a7302440ba45d978ec","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            self.logger.info(\"Pipeline was modified. New pipeline is \\\"%s\\\".\","},{"line_number":502,"context_line":"                             pipe)"},{"line_number":503,"context_line":"        else:"},{"line_number":504,"context_line":"            self.logger.debug(\"Pipeline is \\\"%s\\\"\", pipe)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"def app_factory(global_conf, **local_conf):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9LoI%3D","line":504,"updated":"2013-12-15 14:26:13.000000000","message":"Can you add a unit test that hits this path?","commit_id":"6ce6f26a74012995e6953e5aafe49c58a77c3633"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"7da5ae9aa4bc25c64dc4b47dbca7f959631e61d0","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            self.logger.info(\"Pipeline was modified. New pipeline is \\\"%s\\\".\","},{"line_number":502,"context_line":"                             pipe)"},{"line_number":503,"context_line":"        else:"},{"line_number":504,"context_line":"            self.logger.debug(\"Pipeline is \\\"%s\\\"\", pipe)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"def app_factory(global_conf, **local_conf):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9LRw%3D","line":504,"in_reply_to":"AAAATn%2F9LoI%3D","updated":"2013-12-15 20:03:05.000000000","message":"Done","commit_id":"6ce6f26a74012995e6953e5aafe49c58a77c3633"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"36da11bd3334acc71f2441aeaf2d2cf8d497acad","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        \u0027\u0027\u0027"},{"line_number":476,"context_line":"        Called during wsgi pipeline creation. Modifies the wsgi pipeline"},{"line_number":477,"context_line":"        context to ensure that mandatory middleware is placed at the start"},{"line_number":478,"context_line":"        of the pipeline."},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"        :param pipe: A PipelineWrapper object"},{"line_number":481,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9HLE%3D","line":478,"updated":"2013-12-16 18:09:34.000000000","message":"you might want to change this docstring now the behaviour is less draconian","commit_id":"5397e69165d01912ef4524ec40edd286168269c1"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"65f617b970ee4fdcfc97bf7a28607135a99583fb","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        \u0027\u0027\u0027"},{"line_number":476,"context_line":"        Called during wsgi pipeline creation. Modifies the wsgi pipeline"},{"line_number":477,"context_line":"        context to ensure that mandatory middleware is placed at the start"},{"line_number":478,"context_line":"        of the pipeline."},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"        :param pipe: A PipelineWrapper object"},{"line_number":481,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9G8E%3D","line":478,"in_reply_to":"AAAATn%2F9HLE%3D","updated":"2013-12-16 18:48:12.000000000","message":"Done","commit_id":"5397e69165d01912ef4524ec40edd286168269c1"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"aaa5eeed8058459989d14008bc4302f0f033a39b","unresolved":false,"context_lines":[{"line_number":492,"context_line":"                self.logger.info("},{"line_number":493,"context_line":"                    \u0027Adding required filter %s to pipeline at position %d\u0027 %"},{"line_number":494,"context_line":"                    (filter_name, insert_at))"},{"line_number":495,"context_line":"                ctx \u003d pipe.create_filter(filter_name)"},{"line_number":496,"context_line":"                pipe.insert_filter(ctx, index\u003dinsert_at)"},{"line_number":497,"context_line":"                pipeline_was_modified \u003d True"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9GMM%3D","line":495,"updated":"2013-12-16 20:36:22.000000000","message":"Seems like we always create and insert, perhaps it is worthwhile to merge the two?  Would there be a case of a WSGI app where we don\u0027t insert?  Or perhaps a WSGI app would have a filter already and would want to just insert it?","commit_id":"d0cc4fc39e15253c9b23be3a143b7ef34ee4c440"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"5dc55e2b0a87bad2093a99bc647c1b94e4cbe5f9","unresolved":false,"context_lines":[{"line_number":492,"context_line":"                self.logger.info("},{"line_number":493,"context_line":"                    \u0027Adding required filter %s to pipeline at position %d\u0027 %"},{"line_number":494,"context_line":"                    (filter_name, insert_at))"},{"line_number":495,"context_line":"                ctx \u003d pipe.create_filter(filter_name)"},{"line_number":496,"context_line":"                pipe.insert_filter(ctx, index\u003dinsert_at)"},{"line_number":497,"context_line":"                pipeline_was_modified \u003d True"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9GIg%3D","line":495,"in_reply_to":"AAAATn%2F9GMM%3D","updated":"2013-12-16 20:53:34.000000000","message":"(answered in other inline comment)","commit_id":"d0cc4fc39e15253c9b23be3a143b7ef34ee4c440"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"2929d53a4bc91447191a2a7de584477fe59c86d5","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# List of entry points for mandatory middlewares"},{"line_number":42,"context_line":"required_filters \u003d [{\u0027name\u0027: \u0027catch_errors\u0027}]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class Application(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F9F8Y%3D","line":42,"updated":"2013-12-16 21:26:38.000000000","message":"I\u0027d like to see some more docs, even if just as a comment block here, on what the format of this list is and how it works.\n\nMaybe I\u0027m just slow, but it didn\u0027t really get how it all comes together until reading all the way through the tests.","commit_id":"9a2d3f0870c2908f64c2578552b1881aae80b790"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"72306e1d300e1ae15577ed514b0a3d0a48105b2b","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# List of entry points for mandatory middlewares"},{"line_number":42,"context_line":"required_filters \u003d [{\u0027name\u0027: \u0027catch_errors\u0027}]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class Application(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F9FqQ%3D","line":42,"in_reply_to":"AAAATn%2F9F8Y%3D","updated":"2013-12-16 22:13:09.000000000","message":"Sure, I can do that.","commit_id":"9a2d3f0870c2908f64c2578552b1881aae80b790"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"2929d53a4bc91447191a2a7de584477fe59c86d5","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                        insert_at \u003d max(insert_at, pipe.index(after) + 1)"},{"line_number":501,"context_line":"                    except ValueError:  # not in pipeline; ignore it"},{"line_number":502,"context_line":"                        pass"},{"line_number":503,"context_line":"                self.logger.info("},{"line_number":504,"context_line":"                    \u0027Adding required filter %s to pipeline at position %d\u0027 %"},{"line_number":505,"context_line":"                    (filter_name, insert_at))"},{"line_number":506,"context_line":"                ctx \u003d pipe.create_filter(filter_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F9F%2F8%3D","line":503,"updated":"2013-12-16 21:26:38.000000000","message":"is info high enough? should it be warning?","commit_id":"9a2d3f0870c2908f64c2578552b1881aae80b790"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"72306e1d300e1ae15577ed514b0a3d0a48105b2b","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                        insert_at \u003d max(insert_at, pipe.index(after) + 1)"},{"line_number":501,"context_line":"                    except ValueError:  # not in pipeline; ignore it"},{"line_number":502,"context_line":"                        pass"},{"line_number":503,"context_line":"                self.logger.info("},{"line_number":504,"context_line":"                    \u0027Adding required filter %s to pipeline at position %d\u0027 %"},{"line_number":505,"context_line":"                    (filter_name, insert_at))"},{"line_number":506,"context_line":"                ctx \u003d pipe.create_filter(filter_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F9Fpk%3D","line":503,"in_reply_to":"AAAATn%2F9F%2F8%3D","updated":"2013-12-16 22:13:09.000000000","message":"I was thinking that I\u0027d save warnings for later when we start looking for middleware in the wrong place. Here, I think info is okay since it doesn\u0027t indicate that anything is wrong, just that we\u0027re making a perfectly normal change that the operator might find interesting.\n\nMoving a middleware (which this patch doesn\u0027t do) would definitely warrant a warning IMO.","commit_id":"9a2d3f0870c2908f64c2578552b1881aae80b790"}],"test/unit/common/test_wsgi.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2b19e9ccbf121ab593f079992a79935d2dcf7a6a","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        use \u003d egg:swift#catch_errors"},{"line_number":137,"context_line":"        \"\"\""},{"line_number":138,"context_line":"        contents \u003d dedent(config)"},{"line_number":139,"context_line":"        with mock.patch(\u0027swift.proxy.server.Application.modify_wsgi_pipeline\u0027):"},{"line_number":140,"context_line":"            with temptree([\u0027proxy-server.conf\u0027]) as t:"},{"line_number":141,"context_line":"                conf_file \u003d os.path.join(t, \u0027proxy-server.conf\u0027)"},{"line_number":142,"context_line":"                with open(conf_file, \u0027w\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9Nsc%3D","line":139,"updated":"2013-12-13 23:12:27.000000000","message":"this test still passes for me even when this is not mocked.","commit_id":"01ccdba51bd482e09f800102f272503baf6f8754"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"36da11bd3334acc71f2441aeaf2d2cf8d497acad","unresolved":false,"context_lines":[{"line_number":861,"context_line":"        new_req_filters \u003d ["},{"line_number":862,"context_line":"            # not in pipeline, no afters"},{"line_number":863,"context_line":"            {\u0027name\u0027: \u0027catch_errors\u0027,"},{"line_number":864,"context_line":"             \u0027entry_point\u0027: \u0027catch_errors\u0027},"},{"line_number":865,"context_line":"            # already in pipeline"},{"line_number":866,"context_line":"            {\u0027name\u0027: \u0027proxy_logging\u0027,"},{"line_number":867,"context_line":"             \u0027entry_point\u0027: \u0027proxy_logging\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9HNc%3D","line":864,"updated":"2013-12-16 18:09:34.000000000","message":"what is the significance of the entry_point item here? I can\u0027t see where it is used.","commit_id":"5397e69165d01912ef4524ec40edd286168269c1"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"65f617b970ee4fdcfc97bf7a28607135a99583fb","unresolved":false,"context_lines":[{"line_number":861,"context_line":"        new_req_filters \u003d ["},{"line_number":862,"context_line":"            # not in pipeline, no afters"},{"line_number":863,"context_line":"            {\u0027name\u0027: \u0027catch_errors\u0027,"},{"line_number":864,"context_line":"             \u0027entry_point\u0027: \u0027catch_errors\u0027},"},{"line_number":865,"context_line":"            # already in pipeline"},{"line_number":866,"context_line":"            {\u0027name\u0027: \u0027proxy_logging\u0027,"},{"line_number":867,"context_line":"             \u0027entry_point\u0027: \u0027proxy_logging\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9G8I%3D","line":864,"in_reply_to":"AAAATn%2F9HNc%3D","updated":"2013-12-16 18:48:12.000000000","message":"Leftovers from some earlier patch set. Will fix.","commit_id":"5397e69165d01912ef4524ec40edd286168269c1"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"19799bba62e93e40ba7b37e247b6285cba49700f","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        }"},{"line_number":177,"context_line":"        # strip indent from test config contents"},{"line_number":178,"context_line":"        config_dir \u003d dict((f, dedent(c)) for (f, c) in config_dir.items())"},{"line_number":179,"context_line":"        with mock.patch(\u0027swift.proxy.server.Application.modify_wsgi_pipeline\u0027):"},{"line_number":180,"context_line":"            with temptree(*zip(*config_dir.items())) as conf_root:"},{"line_number":181,"context_line":"                conf_dir \u003d os.path.join(conf_root, \u0027proxy-server.conf.d\u0027)"},{"line_number":182,"context_line":"                with open(os.path.join(conf_dir, \u0027swift.conf\u0027), \u0027w\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9Cww%3D","line":179,"updated":"2013-12-17 11:38:56.000000000","message":"I don\u0027t think this mock.patch is necessary - possibly a hangover from when I was also inserting gatekeeper, which the test doesn\u0027t expect to be there.","commit_id":"a49fd3d8def23bfb49e605fea372c82d1ec6cdff"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"8a4dfc096c8f8cf22eb23abd5435837b7ea4a6a9","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        }"},{"line_number":177,"context_line":"        # strip indent from test config contents"},{"line_number":178,"context_line":"        config_dir \u003d dict((f, dedent(c)) for (f, c) in config_dir.items())"},{"line_number":179,"context_line":"        with mock.patch(\u0027swift.proxy.server.Application.modify_wsgi_pipeline\u0027):"},{"line_number":180,"context_line":"            with temptree(*zip(*config_dir.items())) as conf_root:"},{"line_number":181,"context_line":"                conf_dir \u003d os.path.join(conf_root, \u0027proxy-server.conf.d\u0027)"},{"line_number":182,"context_line":"                with open(os.path.join(conf_dir, \u0027swift.conf\u0027), \u0027w\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9Bgc%3D","line":179,"in_reply_to":"AAAATn%2F9Cww%3D","updated":"2013-12-17 15:43:14.000000000","message":"Good point, but I find that I like having it there. It makes it clear that this test is really only testing the config-file combining stuff and nothing else.","commit_id":"a49fd3d8def23bfb49e605fea372c82d1ec6cdff"}]}
