)]}'
{"keystone/access_rules/core.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"cae0195ac1a848fd6c33404c3e0032a4b8f0828f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                services \u003d [svc for svc in services if svc[\u0027type\u0027] \u003d\u003d service]"},{"line_number":55,"context_line":"            for svc in services:"},{"line_number":56,"context_line":"                rules[svc[\u0027type\u0027]] \u003d []"},{"line_number":57,"context_line":"                for method in [\u0027GET\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027PATCH\u0027, \u0027DELETE\u0027]:"},{"line_number":58,"context_line":"                    rules[svc[\u0027type\u0027]].append({"},{"line_number":59,"context_line":"                        \"request_path\": \"**\","},{"line_number":60,"context_line":"                        \"request_method\": method,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_ebe6154b","line":57,"updated":"2019-02-19 18:53:03.000000000","message":"HEAD?","commit_id":"e1c65dc787faf6bb82878f13a50048d7e408e8ba"}],"keystone/access_rules_config/backends/json.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"a4a91a7d68a1c92bad45ccbb4ec2e282baccd99f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __init__(self):"},{"line_number":96,"context_line":"        super(AccessRulesConfig, self).__init__()"},{"line_number":97,"context_line":"        if CONF.access_rules_config.permissive:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        access_rules_file \u003d CONF.access_rules_config.rules_file"},{"line_number":100,"context_line":"        self.access_rules \u003d dict()"},{"line_number":101,"context_line":"        self.access_rules_json \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_a121a5b6","line":98,"range":{"start_line":98,"start_character":11,"end_line":98,"end_character":18},"updated":"2019-02-25 17:58:57.000000000","message":"Should this set an empty dict? Is this intended to be an implicit None? I prefer explicit None","commit_id":"7ed826072c79f9c104ffaaf6188510484ca04e0e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1d73065bedf0612fbc3fba762ad276d374f26dfd","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __init__(self):"},{"line_number":96,"context_line":"        super(AccessRulesConfig, self).__init__()"},{"line_number":97,"context_line":"        if CONF.access_rules_config.permissive:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        access_rules_file \u003d CONF.access_rules_config.rules_file"},{"line_number":100,"context_line":"        self.access_rules \u003d dict()"},{"line_number":101,"context_line":"        self.access_rules_json \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_b2d9f183","line":98,"range":{"start_line":98,"start_character":11,"end_line":98,"end_character":18},"in_reply_to":"9fdfeff1_9c6c0437","updated":"2019-02-25 19:39:21.000000000","message":"Ignore the \"return\". see the first part of the question, should this set self.access_rules etc to empty dicts?","commit_id":"7ed826072c79f9c104ffaaf6188510484ca04e0e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8c59a451f7f2ae89bf923e0bb69ad21e0dc03aec","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __init__(self):"},{"line_number":96,"context_line":"        super(AccessRulesConfig, self).__init__()"},{"line_number":97,"context_line":"        if CONF.access_rules_config.permissive:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        access_rules_file \u003d CONF.access_rules_config.rules_file"},{"line_number":100,"context_line":"        self.access_rules \u003d dict()"},{"line_number":101,"context_line":"        self.access_rules_json \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_9c6c0437","line":98,"range":{"start_line":98,"start_character":11,"end_line":98,"end_character":18},"in_reply_to":"9fdfeff1_a121a5b6","updated":"2019-02-25 18:33:06.000000000","message":"This is a constructor, why should it return anything? The return here is to circumvent attempting to load a config file unnecessarily.","commit_id":"7ed826072c79f9c104ffaaf6188510484ca04e0e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"5fa12c24f760611d8a2142e6dfa53bc81de03232","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __init__(self):"},{"line_number":96,"context_line":"        super(AccessRulesConfig, self).__init__()"},{"line_number":97,"context_line":"        if CONF.access_rules_config.permissive:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        access_rules_file \u003d CONF.access_rules_config.rules_file"},{"line_number":100,"context_line":"        self.access_rules \u003d dict()"},{"line_number":101,"context_line":"        self.access_rules_json \u003d dict()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_92214d50","line":98,"range":{"start_line":98,"start_character":11,"end_line":98,"end_character":18},"in_reply_to":"9fdfeff1_b2d9f183","updated":"2019-02-25 19:45:48.000000000","message":"Ah yeah probably","commit_id":"7ed826072c79f9c104ffaaf6188510484ca04e0e"}]}
