)]}'
{"oslo_middleware/cors.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70950e3eae973a99ff19e99773d035de2f938fd3","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    This method permits a project to override the default CORS option values."},{"line_number":70,"context_line":"    For example, an API may wish to add its own default headers, so that they"},{"line_number":71,"context_line":"    are properly included by oslo-config-generator."},{"line_number":72,"context_line":"    \u0027\u0027\u0027"},{"line_number":73,"context_line":"    cfg.set_defaults(CORS_OPTS, **kwargs)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_e6b938cd","line":71,"updated":"2016-02-26 15:57:35.000000000","message":"An example showing how to call this would be handy.\n\nDefine what the allowed arguments are.","commit_id":"8ce9a86950217ff7249639a9c20ed113050c310e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1adfcd640d9b8be2e863cf2b4343edb015ea7e35","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"def set_defaults(**kwargs):"},{"line_number":67,"context_line":"    \u0027\u0027\u0027Override the default configuration options."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    This method permits a project to override the default CORS option values."},{"line_number":70,"context_line":"    For example, an API may wish to add its own default headers, so that they"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_be497e62","line":67,"updated":"2016-03-10 00:19:57.000000000","message":"use \"\"\" for consistency.\n\nOverride the default value for the configuration options.","commit_id":"a40463ad3ae499dc1d9b2d76fa7a2563975ddf6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1adfcd640d9b8be2e863cf2b4343edb015ea7e35","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    This method permits a project to override the default CORS option values."},{"line_number":70,"context_line":"    For example, an API may wish to add its own default headers, so that they"},{"line_number":71,"context_line":"    are properly included by oslo-config-generator."},{"line_number":72,"context_line":"    \u0027\u0027\u0027"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Do not permit this value, as it would silently activate the middleware."}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_7eb1b646","line":71,"updated":"2016-03-10 00:19:57.000000000","message":"The documentation needs to say what the allowed values otherwise there\u0027s no way to use it. Probably better not to use kwargs.","commit_id":"a40463ad3ae499dc1d9b2d76fa7a2563975ddf6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1adfcd640d9b8be2e863cf2b4343edb015ea7e35","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Do not permit this value, as it would silently activate the middleware."},{"line_number":75,"context_line":"    if \u0027allowed_origin\u0027 in kwargs:"},{"line_number":76,"context_line":"        del kwargs[\u0027allowed_origin\u0027]"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    cfg.set_defaults(CORS_OPTS, **kwargs)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_5e679ae8","line":76,"updated":"2016-03-10 00:19:57.000000000","message":"this should raise an exception rather than silently ignoring it.","commit_id":"a40463ad3ae499dc1d9b2d76fa7a2563975ddf6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def set_defaults(**kwargs):"},{"line_number":69,"context_line":"    \"\"\"Override the default configuration options."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    This method permits a project to override the default CORS option values."},{"line_number":72,"context_line":"    For example, an API may wish to add its own default headers, so that they"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_9f6d3a35","line":69,"updated":"2016-03-11 20:41:24.000000000","message":"suggest change to \"Override the default values for configuration options\"","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"3c5af192683c6f438e2fb9a20d668d0a7ac1a28a","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def set_defaults(**kwargs):"},{"line_number":69,"context_line":"    \"\"\"Override the default configuration options."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    This method permits a project to override the default CORS option values."},{"line_number":72,"context_line":"    For example, an API may wish to add its own default headers, so that they"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_38903dec","line":69,"in_reply_to":"3afc51ec_9f6d3a35","updated":"2016-03-14 15:16:38.000000000","message":"The way I understand this, this function is more of a set_or_override_defaults. Since this is also used to initially set the defaults when cors is enabled in an application. I would rather have something such as \"init_defaults\" since it\u0027s pretty much what it\u0027s doing.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    This method permits a project to override the default CORS option values."},{"line_number":72,"context_line":"    For example, an API may wish to add its own default headers, so that they"},{"line_number":73,"context_line":"    are properly included by oslo-config-generator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    :param allow_credentials: Whether to permit credentials."},{"line_number":76,"context_line":"    :param expose_headers: A list of headers to expose."}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_5f58d2fa","line":73,"updated":"2016-03-11 20:41:24.000000000","message":"I don\u0027t understand what\u0027s so important about oslo-config-generator here... isn\u0027t it more important that the server is configured as expected?","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    For example, an API may wish to add its own default headers, so that they"},{"line_number":73,"context_line":"    are properly included by oslo-config-generator."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    :param allow_credentials: Whether to permit credentials."},{"line_number":76,"context_line":"    :param expose_headers: A list of headers to expose."},{"line_number":77,"context_line":"    :param max_age: Maximum cache duration."},{"line_number":78,"context_line":"    :param allow_methods: List of HTTP methods to permit."}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_1f2c8a49","line":75,"updated":"2016-03-11 20:41:24.000000000","message":"the types of each of these parameters needs to be documented, too. Otherwise I wouldn\u0027t know how to call it.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    :param allow_methods: List of HTTP methods to permit."},{"line_number":79,"context_line":"    :param allow_headers: List of HTTP headers to permit from the client."},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    # Since \u0027None\u0027 is a valid config override, we have to use kwargs. Else"},{"line_number":82,"context_line":"    # there\u0027s no good way for a user to override only one option, because all"},{"line_number":83,"context_line":"    # the others would be overridden to \u0027None\u0027."},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_ffbefed2","line":81,"updated":"2016-03-11 20:41:24.000000000","message":"Is it valid to override the default of any of these options to be None? This function could just skip any parameter that\u0027s None and not apply it.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"3c5af192683c6f438e2fb9a20d668d0a7ac1a28a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    :param allow_methods: List of HTTP methods to permit."},{"line_number":79,"context_line":"    :param allow_headers: List of HTTP headers to permit from the client."},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    # Since \u0027None\u0027 is a valid config override, we have to use kwargs. Else"},{"line_number":82,"context_line":"    # there\u0027s no good way for a user to override only one option, because all"},{"line_number":83,"context_line":"    # the others would be overridden to \u0027None\u0027."},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_982cf103","line":81,"in_reply_to":"3afc51ec_ffbefed2","updated":"2016-03-14 15:16:38.000000000","message":"Well, a default value would be something other than None, and None would be preferred. Then this is correct.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    # Only permit values in the given list."},{"line_number":86,"context_line":"    valid_params \u003d [\u0027allow_credentials\u0027, \u0027expose_headers\u0027, \u0027max_age\u0027,"},{"line_number":87,"context_line":"                    \u0027allow_methods\u0027, \u0027allow_headers\u0027]"},{"line_number":88,"context_line":"    wrong_params \u003d [k for k in kwargs if k not in valid_params]"},{"line_number":89,"context_line":"    if wrong_params:"},{"line_number":90,"context_line":"        raise AttributeError(\"Parameter [%s] invalid, please only use [%s]\""},{"line_number":91,"context_line":"                             % (wrong_params, valid_params))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_ffed5e26","line":88,"updated":"2016-03-11 20:41:24.000000000","message":"this is essentially set() - set().","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"3c5af192683c6f438e2fb9a20d668d0a7ac1a28a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    # Only permit values in the given list."},{"line_number":86,"context_line":"    valid_params \u003d [\u0027allow_credentials\u0027, \u0027expose_headers\u0027, \u0027max_age\u0027,"},{"line_number":87,"context_line":"                    \u0027allow_methods\u0027, \u0027allow_headers\u0027]"},{"line_number":88,"context_line":"    wrong_params \u003d [k for k in kwargs if k not in valid_params]"},{"line_number":89,"context_line":"    if wrong_params:"},{"line_number":90,"context_line":"        raise AttributeError(\"Parameter [%s] invalid, please only use [%s]\""},{"line_number":91,"context_line":"                             % (wrong_params, valid_params))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_180e213b","line":88,"in_reply_to":"3afc51ec_ffed5e26","updated":"2016-03-14 15:16:38.000000000","message":"Why not iterate CORS_OPTS and get the names from there? That way you don\u0027t need to update this list every time a new option is added. I also agree with Brant, it could be done in a more efficient way.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                    \u0027allow_methods\u0027, \u0027allow_headers\u0027]"},{"line_number":88,"context_line":"    wrong_params \u003d [k for k in kwargs if k not in valid_params]"},{"line_number":89,"context_line":"    if wrong_params:"},{"line_number":90,"context_line":"        raise AttributeError(\"Parameter [%s] invalid, please only use [%s]\""},{"line_number":91,"context_line":"                             % (wrong_params, valid_params))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    # Set global defaults."}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_ffd43e48","line":90,"updated":"2016-03-11 20:41:24.000000000","message":"strings should use \u0027 for consistency.\n\nsuggest use Parameter(s) for grammar.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"37304d7de273399ce60070b19c394845e3c6d8d2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    allow it to function with only minimal additional configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    :param allow_credentials: Whether to permit credentials."},{"line_number":66,"context_line":"    :type allow_credentials: Boolean"},{"line_number":67,"context_line":"    :param expose_headers: A list of headers to expose."},{"line_number":68,"context_line":"    :type expose_headers: List of Strings"},{"line_number":69,"context_line":"    :param max_age: Maximum cache duration in seconds."}],"source_content_type":"text/x-python","patch_set":7,"id":"da0c15f0_a2811f92","line":66,"range":{"start_line":66,"start_character":29,"end_line":66,"end_character":36},"updated":"2016-03-24 19:58:57.000000000","message":"suggest bool since this is the function. This applies to the other types, too.","commit_id":"b28d8ab9286db716f1d1b3dd1284f0efb8be3894"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"37304d7de273399ce60070b19c394845e3c6d8d2","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    # the others would be overridden to \u0027None\u0027."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    valid_params \u003d set([k.name for k in CORS_OPTS"},{"line_number":81,"context_line":"                        if k.name !\u003d \u0027allowed_origin\u0027])"},{"line_number":82,"context_line":"    passed_params \u003d set(k for k in kwargs)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    wrong_params \u003d passed_params - valid_params"}],"source_content_type":"text/x-python","patch_set":7,"id":"da0c15f0_a2aabf17","line":81,"updated":"2016-03-24 19:58:57.000000000","message":"remove the []. No need to construct a list.","commit_id":"b28d8ab9286db716f1d1b3dd1284f0efb8be3894"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"348b5b3812179ab6fb3fa8d39351a724cbbb468f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    :param expose_headers: A list of headers to expose."},{"line_number":68,"context_line":"    :type expose_headers: List of Strings"},{"line_number":69,"context_line":"    :param max_age: Maximum cache duration in seconds."},{"line_number":70,"context_line":"    :type max_age: Int"},{"line_number":71,"context_line":"    :param allow_methods: List of HTTP methods to permit."},{"line_number":72,"context_line":"    :type allow_methods: List of Strings"},{"line_number":73,"context_line":"    :param allow_headers: List of HTTP headers to permit from the client."}],"source_content_type":"text/x-python","patch_set":9,"id":"9a061dce_5827b5c9","line":70,"updated":"2016-04-06 20:08:30.000000000","message":"suggest int since this is the function.","commit_id":"42dde7fb50bf9edda979a05987d03b4b2ba667c8"}],"oslo_middleware/tests/test_cors.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"70950e3eae973a99ff19e99773d035de2f938fd3","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        super(CORSTestDefaultOverrides, self).setUp()"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # Set up the config fixture."},{"line_number":119,"context_line":"        config \u003d self.useFixture(fixture.Config(cfg.CONF))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        config.load_raw_values(group\u003d\u0027cors\u0027,"},{"line_number":122,"context_line":"                               allowed_origin\u003d\u0027http://valid.example.com\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_d1778c38","line":119,"updated":"2016-02-26 15:57:35.000000000","message":"do we have to use the global CONF here? We should prefer a transient instance in tests.","commit_id":"8ce9a86950217ff7249639a9c20ed113050c310e"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"d1f50d5c93934e790e35755cde0ee6bcfc2fa5df","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        super(CORSTestDefaultOverrides, self).setUp()"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # Set up the config fixture."},{"line_number":119,"context_line":"        config \u003d self.useFixture(fixture.Config(cfg.CONF))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        config.load_raw_values(group\u003d\u0027cors\u0027,"},{"line_number":122,"context_line":"                               allowed_origin\u003d\u0027http://valid.example.com\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_20de6311","line":119,"in_reply_to":"9aed3d3a_d1778c38","updated":"2016-02-26 16:28:22.000000000","message":"Probably. This patch is actually broken, for reasons that I _suspect_ are related to your comment. The global CONF is used in most tests.","commit_id":"8ce9a86950217ff7249639a9c20ed113050c310e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1adfcd640d9b8be2e863cf2b4343edb015ea7e35","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_config_defaults(self):"},{"line_number":147,"context_line":"        \u0027\u0027\u0027Assert that using set_defaults overrides the appropriate values.\u0027\u0027\u0027"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        cors.set_defaults(**self.override_opts)"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_9e5002d6","line":147,"updated":"2016-03-10 00:19:57.000000000","message":"use \"\"\" for consistency.","commit_id":"a40463ad3ae499dc1d9b2d76fa7a2563975ddf6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1adfcd640d9b8be2e863cf2b4343edb015ea7e35","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        \u0027\u0027\u0027"},{"line_number":160,"context_line":"        cors.set_defaults(allowed_origin\u003d\u0027https://foo.example.com\u0027)"},{"line_number":161,"context_line":"        self.config([])"},{"line_number":162,"context_line":"        self.assertEqual(None, self.config.cors.allowed_origin)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def test_cascading_override(self):"},{"line_number":165,"context_line":"        \u0027\u0027\u0027Assert that using set_defaults overrides cors.* config values.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_1e5b52f7","line":162,"range":{"start_line":162,"start_character":13,"end_line":162,"end_character":24},"updated":"2016-03-10 00:19:57.000000000","message":"use assertIs to compare singletons.\n\nActually should use assertIsNone.","commit_id":"a40463ad3ae499dc1d9b2d76fa7a2563975ddf6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1adfcd640d9b8be2e863cf2b4343edb015ea7e35","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        # Check the child configuration for expected values:"},{"line_number":187,"context_line":"        cc \u003d self.config[\u0027cors.override_creds\u0027]"},{"line_number":188,"context_line":"        self.assertEqual(cc.allowed_origin, [\u0027http://creds.example.com\u0027])"},{"line_number":189,"context_line":"        self.assertEqual(cc.allow_credentials, True)"},{"line_number":190,"context_line":"        self.assertEqual(cc.expose_headers,"},{"line_number":191,"context_line":"                         self.override_opts[\u0027expose_headers\u0027])"},{"line_number":192,"context_line":"        self.assertEqual(cc.max_age, 3600)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_be185e1f","line":189,"updated":"2016-03-10 00:19:57.000000000","message":"this should use assertIs or assertTrue","commit_id":"a40463ad3ae499dc1d9b2d76fa7a2563975ddf6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f51161211457c9d28dfb029bc73362aca7d0dfe6","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.assertEqual(gc.allow_methods,"},{"line_number":180,"context_line":"                         self.override_opts[\u0027allow_methods\u0027])"},{"line_number":181,"context_line":"        self.assertEqual(gc.allow_headers,"},{"line_number":182,"context_line":"                         self.override_opts[\u0027allow_headers\u0027])"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        # Check the child configuration for expected values:"},{"line_number":185,"context_line":"        cc \u003d self.config[\u0027cors.override_creds\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_bf90f6ed","line":182,"updated":"2016-03-11 20:41:24.000000000","message":"max_age should also be tested.","commit_id":"839d1ab9c3a145c59a5ed34b51a2c17e24633662"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"37304d7de273399ce60070b19c394845e3c6d8d2","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                         self.override_opts[\u0027allow_credentials\u0027])"},{"line_number":189,"context_line":"        self.assertEqual(gc.expose_headers,"},{"line_number":190,"context_line":"                         self.override_opts[\u0027expose_headers\u0027])"},{"line_number":191,"context_line":"        self.assertEqual(gc.max_age, 10)"},{"line_number":192,"context_line":"        self.assertEqual(gc.allow_methods,"},{"line_number":193,"context_line":"                         self.override_opts[\u0027allow_methods\u0027])"},{"line_number":194,"context_line":"        self.assertEqual(gc.allow_headers,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da0c15f0_257cf971","line":191,"updated":"2016-03-24 19:58:57.000000000","message":"where is 10 coming from? This should be self.override_opts[\u0027max_age\u0027]\n\nSame comment applies at line 203, 215","commit_id":"b28d8ab9286db716f1d1b3dd1284f0efb8be3894"},{"author":{"_account_id":9717,"name":"Michael Krotscheck","email":"krotscheck@gmail.com","username":"krotscheck"},"change_message_id":"d4521ad05b68c1937605f1a8b3e4c6ba7e094fa5","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                         self.override_opts[\u0027allow_credentials\u0027])"},{"line_number":189,"context_line":"        self.assertEqual(gc.expose_headers,"},{"line_number":190,"context_line":"                         self.override_opts[\u0027expose_headers\u0027])"},{"line_number":191,"context_line":"        self.assertEqual(gc.max_age, 10)"},{"line_number":192,"context_line":"        self.assertEqual(gc.allow_methods,"},{"line_number":193,"context_line":"                         self.override_opts[\u0027allow_methods\u0027])"},{"line_number":194,"context_line":"        self.assertEqual(gc.allow_headers,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_7ff9604d","line":191,"in_reply_to":"da0c15f0_257cf971","updated":"2016-03-28 18:02:40.000000000","message":"This comes from **self.override_opts, which is defined on line 151.","commit_id":"b28d8ab9286db716f1d1b3dd1284f0efb8be3894"}]}
