)]}'
{"nova/log.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"e86b32eaea3c1284ea6c1ab9cb19f19a43bc2d23","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @_update_extra"},{"line_number":195,"context_line":"    def audit(self, msg, *args, **kwargs):"},{"line_number":196,"context_line":"        \"\"\"Shortcut for our AUDIT level.\"\"\""},{"line_number":197,"context_line":"        self.log(AUDIT, msg, *args, **kwargs)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def addHandler(self, handler):"},{"line_number":200,"context_line":"        \"\"\"Each handler gets our custom formatter.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2BmA%3D","line":197,"updated":"2012-01-12 20:30:13.000000000","message":"I don\u0027t know if I buy that this is better.  Python doesn\u0027t have a way of defining a protected method, so _ doesn\u0027t imply to me that you can\u0027t override it in a subclass. If we do want to go this route, you need to wrap warn and fatal as well.","commit_id":"b5999f1648aa80b0b375273529fe4cfc15295d94"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"720261c7842bdb0e6fc4142aadd67315ea61ea5d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @_update_extra"},{"line_number":195,"context_line":"    def audit(self, msg, *args, **kwargs):"},{"line_number":196,"context_line":"        \"\"\"Shortcut for our AUDIT level.\"\"\""},{"line_number":197,"context_line":"        self.log(AUDIT, msg, *args, **kwargs)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def addHandler(self, handler):"},{"line_number":200,"context_line":"        \"\"\"Each handler gets our custom formatter.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2BKo%3D","line":197,"in_reply_to":"AAAAD3%2F%2F%2Bj8%3D","updated":"2012-01-13 22:35:07.000000000","message":"I agree with Naveed here, since _log() is really not meant to be a public interface.  I would just ask that warn and fatal are added here.","commit_id":"b5999f1648aa80b0b375273529fe4cfc15295d94"},{"author":{"_account_id":998,"name":"Naveed Massjouni","email":"naveedm9@gmail.com","username":"ironcamel"},"change_message_id":"bcc6713fa536415ec3cf843f4c05d8bf8f0cd70c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    @_update_extra"},{"line_number":195,"context_line":"    def audit(self, msg, *args, **kwargs):"},{"line_number":196,"context_line":"        \"\"\"Shortcut for our AUDIT level.\"\"\""},{"line_number":197,"context_line":"        self.log(AUDIT, msg, *args, **kwargs)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def addHandler(self, handler):"},{"line_number":200,"context_line":"        \"\"\"Each handler gets our custom formatter.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2Bj8%3D","line":197,"in_reply_to":"AAAAD3%2F%2F%2BmA%3D","updated":"2012-01-12 21:17:56.000000000","message":"Vish, as I\u0027m sure you know, _ is the convention for defining private methods. You are correct that there is no way to define a protected method. Please also consider that _log() is not documented anywhere. Theoretically the underlying logging lib can and may change the interface for _log() at any point.","commit_id":"b5999f1648aa80b0b375273529fe4cfc15295d94"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"77b5f1af09837b1130b405271e9651d6ced7ec13","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def _update_extra(self, params):"},{"line_number":156,"context_line":"        if \u0027extra\u0027 not in params:"},{"line_number":157,"context_line":"            params[\u0027extra\u0027] \u003d {}"},{"line_number":158,"context_line":"        extra \u003d params.get(\u0027extra\u0027)"},{"line_number":159,"context_line":"        context \u003d params.get(\u0027context\u0027)"},{"line_number":160,"context_line":"        if context is None:"},{"line_number":161,"context_line":"            context \u003d getattr(local.store, \u0027context\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F%2BIk%3D","line":158,"updated":"2012-01-13 23:07:29.000000000","message":"I\u0027ll point out that you could do \"params[\u0027extra\u0027]\" here instead of needing to use \u0027get\u0027, since the prior block made sure the \u0027extra\u0027 key exists.","commit_id":"3d35dc684684cb1679eb2e04242b7011a8eb1c73"}]}
