)]}'
{"oslo_middleware/base.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1751360e21e12ee63e91dde9d627e620f1639ad1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                else:"},{"line_number":56,"context_line":"                    default_config_files \u003d None"},{"line_number":57,"context_line":"                self.oslo_conf \u003d cfg.ConfigOpts()"},{"line_number":58,"context_line":"                self.oslo_conf({}, project\u003dself.conf[\u0027oslo_config_project\u0027],"},{"line_number":59,"context_line":"                               default_config_files\u003ddefault_config_files,"},{"line_number":60,"context_line":"                               validate_default_values\u003dTrue)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_e2de3710","line":58,"updated":"2015-08-06 09:35:47.000000000","message":"I think this does not include potential CLI arguments, right? and I thought the first argument of a ConfigOpts.__call__() rather was a list :)","commit_id":"8ed1a38c1fcd0c8fd2480dda95a0daf09ff7af7c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"b69d40cc1ade6de895c6a71942353f666101e0b5","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                else:"},{"line_number":56,"context_line":"                    default_config_files \u003d None"},{"line_number":57,"context_line":"                self.oslo_conf \u003d cfg.ConfigOpts()"},{"line_number":58,"context_line":"                self.oslo_conf({}, project\u003dself.conf[\u0027oslo_config_project\u0027],"},{"line_number":59,"context_line":"                               default_config_files\u003ddefault_config_files,"},{"line_number":60,"context_line":"                               validate_default_values\u003dTrue)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_bd592e37","line":58,"in_reply_to":"1a4dcd0f_827653d5","updated":"2015-08-06 09:43:37.000000000","message":"The issue is if the application is started with \u0027my-app --awesome-opt\u0027,\noslo.config will raise an exception because the option is not registered.","commit_id":"8ed1a38c1fcd0c8fd2480dda95a0daf09ff7af7c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"5f6885de194078beb8151e7217d8eec20d73942f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                else:"},{"line_number":56,"context_line":"                    default_config_files \u003d None"},{"line_number":57,"context_line":"                self.oslo_conf \u003d cfg.ConfigOpts()"},{"line_number":58,"context_line":"                self.oslo_conf({}, project\u003dself.conf[\u0027oslo_config_project\u0027],"},{"line_number":59,"context_line":"                               default_config_files\u003ddefault_config_files,"},{"line_number":60,"context_line":"                               validate_default_values\u003dTrue)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_e4716277","line":58,"in_reply_to":"1a4dcd0f_bd592e37","updated":"2015-08-06 10:29:52.000000000","message":"Right. Though I don\u0027t think it\u0027s a valid use case to have a middleware adding a CLI option honestly, so let\u0027s not think about it.","commit_id":"8ed1a38c1fcd0c8fd2480dda95a0daf09ff7af7c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6c12ac5c7cab28fee305fc8d5ce857f8e579c6f2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                else:"},{"line_number":56,"context_line":"                    default_config_files \u003d None"},{"line_number":57,"context_line":"                self.oslo_conf \u003d cfg.ConfigOpts()"},{"line_number":58,"context_line":"                self.oslo_conf({}, project\u003dself.conf[\u0027oslo_config_project\u0027],"},{"line_number":59,"context_line":"                               default_config_files\u003ddefault_config_files,"},{"line_number":60,"context_line":"                               validate_default_values\u003dTrue)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_827653d5","line":58,"in_reply_to":"1a4dcd0f_e2de3710","updated":"2015-08-06 09:41:05.000000000","message":"None of the middleware uses CLI arguments, so we don\u0027t really care I guess.\n(I have fixed the dict/list issue)","commit_id":"8ed1a38c1fcd0c8fd2480dda95a0daf09ff7af7c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ddb2352dbb38af4fb002e9076aa2cd5ec130321e","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def factory(cls, global_conf, **local_conf):"},{"line_number":34,"context_line":"        \"\"\"Factory method for paste.deploy.\"\"\""},{"line_number":35,"context_line":"        conf \u003d global_conf.copy() if global_conf else {}"},{"line_number":36,"context_line":"        conf.update(local_conf)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_dcdca948","line":34,"updated":"2015-08-10 14:02:49.000000000","message":"It would be nice to have some documentation about what type global_conf is supposed to be. It appears that it should be either a ConfigObj or a dict, but I\u0027m not sure both are actually supported.","commit_id":"e744501c47e23abc6db52bd70115c4d833b44b4a"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ddb2352dbb38af4fb002e9076aa2cd5ec130321e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            self.conf \u003d []"},{"line_number":49,"context_line":"            self.oslo_conf \u003d conf"},{"line_number":50,"context_line":"        else:"},{"line_number":51,"context_line":"            self.conf \u003d conf or []"},{"line_number":52,"context_line":"            if \"oslo_config_project\" in self.conf:"},{"line_number":53,"context_line":"                if \u0027oslo_config_file\u0027 in self.conf:"},{"line_number":54,"context_line":"                    default_config_files \u003d [self.conf[\u0027oslo_config_file\u0027]]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_fc22c5a2","line":51,"updated":"2015-08-10 14:02:49.000000000","message":"Should the default here be {} instead of []? It looks like self.conf is accessed as a dictionary on lines 54 and 58.","commit_id":"e744501c47e23abc6db52bd70115c4d833b44b4a"}],"oslo_middleware/cors.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e72d2fca68558f4bacdae595286a9ee19f1a5ef6","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self._init_from_conf()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @classmethod"},{"line_number":84,"context_line":"    def factory(cls, global_conf, allowed_origin, **local_conf):"},{"line_number":85,"context_line":"        # Ensures allowed_origin config exists"},{"line_number":86,"context_line":"        return super(CORS, cls).factory(global_conf,"},{"line_number":87,"context_line":"                                        allowed_origin\u003dallowed_origin,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_d652a666","line":84,"updated":"2015-08-07 09:00:35.000000000","message":"Why do you need this since you get it by inheritance IIUC?","commit_id":"e744501c47e23abc6db52bd70115c4d833b44b4a"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"ac1d28cf654319a6fe5be5a7fc7b6d0942d64fb4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self._init_from_conf()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @classmethod"},{"line_number":84,"context_line":"    def factory(cls, global_conf, allowed_origin, **local_conf):"},{"line_number":85,"context_line":"        # Ensures allowed_origin config exists"},{"line_number":86,"context_line":"        return super(CORS, cls).factory(global_conf,"},{"line_number":87,"context_line":"                                        allowed_origin\u003dallowed_origin,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_5fdf7dd5","line":84,"in_reply_to":"1a4dcd0f_d652a666","updated":"2015-08-07 13:25:15.000000000","message":"I can remove it in another patch, this is to not break this test:\n\nhttps://github.com/openstack/oslo.middleware/blob/master/oslo_middleware/tests/test_cors.py#L137","commit_id":"e744501c47e23abc6db52bd70115c4d833b44b4a"}],"oslo_middleware/healthcheck/__init__.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ddb2352dbb38af4fb002e9076aa2cd5ec130321e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    @classmethod"},{"line_number":76,"context_line":"    def factory(cls, global_conf, **local_conf):"},{"line_number":77,"context_line":"        \"\"\"Factory method for paste.deploy.\"\"\""},{"line_number":78,"context_line":"        conf \u003d global_conf.copy()"},{"line_number":79,"context_line":"        conf.update(local_conf)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        def healthcheck_filter(app):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_bc467d1f","side":"PARENT","line":78,"updated":"2015-08-10 14:02:49.000000000","message":"The base class allows this to be None, but this assumes it\u0027s a valid config object.","commit_id":"d65a8f0afed36e650b5b7fe3def17ce6fccda220"}],"oslo_middleware/tests/test_cors.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ddb2352dbb38af4fb002e9076aa2cd5ec130321e","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def test_filter_factory(self):"},{"line_number":118,"context_line":"        config \u003d self.useFixture(fixture.Config())"},{"line_number":119,"context_line":"        config.conf([])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Test a valid filter."},{"line_number":122,"context_line":"        filter \u003d cors.filter_factory(None,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_fc84050c","line":119,"updated":"2015-08-10 14:02:49.000000000","message":"Is this variable actually used? It is reset to another value on line 133.","commit_id":"e744501c47e23abc6db52bd70115c4d833b44b4a"}],"oslo_middleware/tests/test_ssl.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ddb2352dbb38af4fb002e9076aa2cd5ec130321e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(SSLMiddlewareTest, self).setUp()"},{"line_number":27,"context_line":"        self.useFixture(config.Config())"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _test_scheme(self, expected, headers, config\u003dNone):"},{"line_number":30,"context_line":"        middleware \u003d ssl.SSLMiddleware(None)"},{"line_number":31,"context_line":"        if config:"},{"line_number":32,"context_line":"            middleware.oslo_conf.set_override("}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_bccc3d62","line":29,"updated":"2015-08-10 14:02:49.000000000","message":"That new argument is named in a way that makes it seem like it\u0027s a config object, but it\u0027s really the value for the ssl header option.","commit_id":"e744501c47e23abc6db52bd70115c4d833b44b4a"}]}
