)]}'
{"nova/hooks.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f3b710e186d6b6b422e0b617da9261625ea7cd8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        # invoke_on_load creates an instance of the Hook class"},{"line_number":55,"context_line":"        super(HookManager, self).__init__(NS, name, invoke_on_load\u003dTrue)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def run_pre(self, name, f, args, kwargs, passFunction):"},{"line_number":58,"context_line":"        for e in self.extensions:"},{"line_number":59,"context_line":"            obj \u003d e.obj"},{"line_number":60,"context_line":"            pre \u003d getattr(obj, \u0027pre\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FdHQ%3D","line":57,"updated":"2013-07-01 16:25:50.000000000","message":"DoNotUseCamelCasePlease :)","commit_id":"97275938952b2afb48b8429c481f8f9d7c0be9a5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cb24dd2c3bfe5b0233bddc651cdf66bb18b85e31","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        # invoke_on_load creates an instance of the Hook class"},{"line_number":55,"context_line":"        super(HookManager, self).__init__(NS, name, invoke_on_load\u003dTrue)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def run_pre(self, name, f, args, kwargs, pass_function):"},{"line_number":58,"context_line":"        for e in self.extensions:"},{"line_number":59,"context_line":"            obj \u003d e.obj"},{"line_number":60,"context_line":"            pre \u003d getattr(obj, \u0027pre\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FcNU%3D","line":57,"updated":"2013-07-01 21:32:55.000000000","message":"Do we want the code to be backward compatible?\n\nConsider:\nrun_pre(self, name, args, kwargs, pass_function\u003dNone, f\u003dNone):","commit_id":"5f5219acc41aab0ae59f4db791fd4c1da345e948"},{"author":{"_account_id":7870,"name":"Daniel L Jones","email":"dajones716@gmail.com","username":"jonesld"},"change_message_id":"8091498a3fdeeb38db220725e722be263126254a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        # invoke_on_load creates an instance of the Hook class"},{"line_number":55,"context_line":"        super(HookManager, self).__init__(NS, name, invoke_on_load\u003dTrue)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def run_pre(self, name, f, args, kwargs, pass_function):"},{"line_number":58,"context_line":"        for e in self.extensions:"},{"line_number":59,"context_line":"            obj \u003d e.obj"},{"line_number":60,"context_line":"            pre \u003d getattr(obj, \u0027pre\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FZ5c%3D","line":57,"in_reply_to":"AAAAPn%2F%2FbPM%3D","updated":"2013-07-02 17:07:12.000000000","message":"The current code should already be backwards compatible, but I like the idea of only passing the function to run_pre/post when we need it instead of on every call. I\u0027ll update it in the next patch set.","commit_id":"5f5219acc41aab0ae59f4db791fd4c1da345e948"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45407db49faea3a170e2746ce92765c1103423ba","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        # invoke_on_load creates an instance of the Hook class"},{"line_number":55,"context_line":"        super(HookManager, self).__init__(NS, name, invoke_on_load\u003dTrue)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def run_pre(self, name, f, args, kwargs, pass_function):"},{"line_number":58,"context_line":"        for e in self.extensions:"},{"line_number":59,"context_line":"            obj \u003d e.obj"},{"line_number":60,"context_line":"            pre \u003d getattr(obj, \u0027pre\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FbPM%3D","line":57,"in_reply_to":"AAAAPn%2F%2FcNU%3D","updated":"2013-07-02 08:13:56.000000000","message":"In addition to this I think that you can use only f - that is:\n\nrun_pre(self, name, args, kwargs, f\u003dNone):\n.\n.\n.\nif f:\n    pre(f, *args, **kwargs)\nelse:\n.\n.\n.","commit_id":"5f5219acc41aab0ae59f4db791fd4c1da345e948"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cb24dd2c3bfe5b0233bddc651cdf66bb18b85e31","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    pre(*args, **kwargs)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def run_post(self, name, f, rv, args, kwargs, pass_function):"},{"line_number":69,"context_line":"        for e in reversed(self.extensions):"},{"line_number":70,"context_line":"            obj \u003d e.obj"},{"line_number":71,"context_line":"            post \u003d getattr(obj, \u0027post\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FcNM%3D","line":68,"updated":"2013-07-01 21:32:55.000000000","message":"ditto","commit_id":"5f5219acc41aab0ae59f4db791fd4c1da345e948"}]}
