)]}'
{"keystoneauth1/access/access.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"000eed57feecd07d6889ee4c0ac21eb59a254cb7","unresolved":false,"context_lines":[{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    @property"},{"line_number":476,"context_line":"    def project_scoped(self):"},{"line_number":477,"context_line":"        return (self._token and \u0027tenant\u0027 in self._token)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    @property"},{"line_number":480,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_ed015707","line":477,"updated":"2015-10-15 23:57:57.000000000","message":"so this needs to return a bool and it won\u0027t catch the keyerror any more. probably needs to be like\n\ntry:\n    token \u003d self._token or {}\nexcept KeyError:\n    return False\nelse:\n    return \u0027tenant\u0027 in token\n\nI kind of wish python had a syntax like ruby\u0027s rescue for doing this inline","commit_id":"9d246e2520dbe5608244bb50d823b44b071fd41e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5a3c401b6d38e77bcb239d3f4611b26bd78d5a29","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        except KeyError:"},{"line_number":480,"context_line":"            return False"},{"line_number":481,"context_line":"        else:"},{"line_number":482,"context_line":"            return \u0027tenant\u0027 in token"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    @property"},{"line_number":485,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_1f1cf8bf","line":482,"updated":"2015-10-16 01:10:41.000000000","message":"ah - sorry to do this to you.\n\nAn easier way is just bool(self.project_id) - that can probably be moved up a level to the base class as well, not necessarily this patch.","commit_id":"a46df3fcb7bde0199b11ce037816cdfb11afec33"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"47d517345a6250514f77ae8c027889f7db013f60","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        except KeyError:"},{"line_number":480,"context_line":"            return False"},{"line_number":481,"context_line":"        else:"},{"line_number":482,"context_line":"            return \u0027tenant\u0027 in token"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    @property"},{"line_number":485,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_21fc33b7","line":482,"in_reply_to":"5a2ca52d_1f1cf8bf","updated":"2015-10-16 05:37:24.000000000","message":"great idea! why didn\u0027t we didn\u0027t we had that in the first place.","commit_id":"a46df3fcb7bde0199b11ce037816cdfb11afec33"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac0bba338b265fa758e5a037b353e61ab6541f12","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :returns: bool"},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        return bool(self.project_id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @property"},{"line_number":235,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_34f3a875","line":232,"updated":"2015-11-08 17:05:13.000000000","message":"for V3 this used to return False in the case of KeyError whereas now it will raise KeyError. So this isn\u0027t backwards compatible.","commit_id":"5a21e9a77a01544b1622eabb2c9f50b086e9bbdc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2f763adece14914e5269738f7b74634172228def","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :returns: bool"},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        return bool(self.project_id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @property"},{"line_number":235,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_6ba62ac3","line":232,"in_reply_to":"da85f559_34f3a875","updated":"2015-11-08 20:37:39.000000000","message":"KeyError is a mistake and not in line with the function name or the docs. How do we get around that?","commit_id":"5a21e9a77a01544b1622eabb2c9f50b086e9bbdc"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"9a365b06ba6d79a09e13889fc4f1c3e9262de51d","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :returns: bool"},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        return bool(self.project_id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @property"},{"line_number":235,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_a91deebe","line":232,"in_reply_to":"da85f559_641667f3","updated":"2015-11-16 22:48:09.000000000","message":"for v3, the project_id property code is wrapped with the @_missingproperty, which does the try/catch for keyError that will result to returning None.","commit_id":"5a21e9a77a01544b1622eabb2c9f50b086e9bbdc"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"597ab83205142c7f8e8046030c90ed686754185b","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :returns: bool"},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        return bool(self.project_id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @property"},{"line_number":235,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_b5a1b6ab","line":232,"in_reply_to":"da85f559_6ba62ac3","updated":"2015-11-09 14:36:54.000000000","message":"one way is to do a try / except here to convert KeyError to False... otherwise the code has to be different for V3 so this change isn\u0027t necessary.","commit_id":"5a21e9a77a01544b1622eabb2c9f50b086e9bbdc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ecc73ad1b59dd4685d1b5f0944b3b40fd4d1279d","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        :returns: bool"},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        return bool(self.project_id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @property"},{"line_number":235,"context_line":"    def domain_scoped(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_641667f3","line":232,"in_reply_to":"da85f559_b5a1b6ab","updated":"2015-11-13 01:34:04.000000000","message":"Sorry - i misread this in the first comment. \n\nThis shouldn\u0027t ever raise KeyError. project_id will return a string or None.","commit_id":"5a21e9a77a01544b1622eabb2c9f50b086e9bbdc"}]}
