)]}'
{"openstack/resource.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d468f827193ac4f3e5df8e23652721cbb30bd2dd","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        The true value of the ``name`` property comes from the"},{"line_number":339,"context_line":"        attribute set as :data:`name_attribute`."},{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        return self._attrs.get(self.name_attribute, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.deleter"},{"line_number":344,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_50703d40","line":341,"updated":"2015-02-16 13:46:36.000000000","message":"You don\u0027t need \"None\"","commit_id":"2b0dacae5b77f921e99e9dc1645de0e335b879c8"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"49360abac0249658fe01b731b8d06f6f6d328bec","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        The true value of the ``name`` property comes from the"},{"line_number":339,"context_line":"        attribute set as :data:`name_attribute`."},{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        return self._attrs.get(self.name_attribute, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.deleter"},{"line_number":344,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_53a4c74a","line":341,"in_reply_to":"da86d52c_50703d40","updated":"2015-02-16 14:24:51.000000000","message":"I prefer being explicit here.","commit_id":"2b0dacae5b77f921e99e9dc1645de0e335b879c8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d468f827193ac4f3e5df8e23652721cbb30bd2dd","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        return self._attrs.get(self.name_attribute, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.deleter"},{"line_number":344,"context_line":"    def name(self):"},{"line_number":345,"context_line":"        del self._attrs[self.name_attribute]"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_d09b4d64","line":343,"updated":"2015-02-16 13:46:36.000000000","message":"I wonder why you have a deleter and no setter?","commit_id":"2b0dacae5b77f921e99e9dc1645de0e335b879c8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"414e7483b26b760a91ff86857cd7e08717fc5090","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        return self._attrs.get(self.name_attribute, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.deleter"},{"line_number":344,"context_line":"    def name(self):"},{"line_number":345,"context_line":"        del self._attrs[self.name_attribute]"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_69b3984d","line":343,"in_reply_to":"da86d52c_334833cc","updated":"2015-02-16 14:47:49.000000000","message":"I think you misread my question. I understand why you have a name property and I understand it\u0027s useful, it\u0027s just that I miss why you need to set @name.deleter or why you don\u0027t use @name.setter too. :)","commit_id":"2b0dacae5b77f921e99e9dc1645de0e335b879c8"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"4c7604d3e9660d2555624aad1c96a0359b92c186","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        return self._attrs.get(self.name_attribute, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.deleter"},{"line_number":344,"context_line":"    def name(self):"},{"line_number":345,"context_line":"        del self._attrs[self.name_attribute]"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_8949ac90","line":343,"in_reply_to":"da86d52c_69b3984d","updated":"2015-02-16 15:02:51.000000000","message":"Now I got it :) Added in next patch set","commit_id":"2b0dacae5b77f921e99e9dc1645de0e335b879c8"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"49360abac0249658fe01b731b8d06f6f6d328bec","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        return self._attrs.get(self.name_attribute, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.deleter"},{"line_number":344,"context_line":"    def name(self):"},{"line_number":345,"context_line":"        del self._attrs[self.name_attribute]"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_334833cc","line":343,"in_reply_to":"da86d52c_d09b4d64","updated":"2015-02-16 14:24:51.000000000","message":"This comes to be the case when you do something like:\n\n    class Person_ES(resource.Resource):\n        name_attribute \u003d \"nombre\"\n        nombre \u003d resource.prop(\"nombre\")\n\nIn at least the Resource.find method, we will search by name or by id, and we do it by what is set in name_attribute or id_attribute as a pointer to where the actual name is. This also makes it easy to reference the resource in log messages or exception values when they all have some name attribute which points to whatever their name is, if it isn\u0027t already Resource.name.","commit_id":"2b0dacae5b77f921e99e9dc1645de0e335b879c8"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"1eb777e2ed1caef043ad3eaaac2502323d552657","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.setter"},{"line_number":344,"context_line":"    def name(self, value):"},{"line_number":345,"context_line":"        self._attrs[self.name_attribute] \u003d value"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    @name.deleter"},{"line_number":348,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_5f7be6bd","line":345,"updated":"2015-02-16 15:47:57.000000000","message":"I like the idea of this change, but what happens if name \u003d resource.prop(\"name\")  I assume the subclass property will be used and we won\u0027t hit the setter and getter at all.","commit_id":"7490f1dc3540f0f6628c4befa78059a965432c3b"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"b8f2a5647eb9364f0f7fe139b9a56ac85cd5bbba","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    @name.setter"},{"line_number":344,"context_line":"    def name(self, value):"},{"line_number":345,"context_line":"        self._attrs[self.name_attribute] \u003d value"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    @name.deleter"},{"line_number":348,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_7fd349d5","line":345,"in_reply_to":"da86d52c_5f7be6bd","updated":"2015-02-16 16:03:05.000000000","message":"Yep, the subclass will be used, so this is only useful when it\u0027s not actually set in order to offer name consistently.","commit_id":"7490f1dc3540f0f6628c4befa78059a965432c3b"}]}
