)]}'
{"cliff/command.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"243b90e9e6a4c0b9e4a6b0e4c13cef4b100633f7","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        The returned value will be returned by the program."},{"line_number":122,"context_line":"        \"\"\""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def run(self, parsed_args):"},{"line_number":125,"context_line":"        \"\"\"Invoked by the application when the command is run."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        Developers implementing commands should override"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_65c4c9f5","line":124,"updated":"2017-06-15 17:02:34.000000000","message":"question: cliff.display.DisplayCommandBase.run() does not call super(), so before and after hooks are not called for Show and Lister. I am not sure it is intended or not.","commit_id":"cb56c4d1f3958ce7be0eaf5b804a133f0e0648a4"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"de8077333571717c5011adc23d90581cbfa15ad8","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        The returned value will be returned by the program."},{"line_number":122,"context_line":"        \"\"\""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def run(self, parsed_args):"},{"line_number":125,"context_line":"        \"\"\"Invoked by the application when the command is run."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        Developers implementing commands should override"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_ed786ec4","line":124,"in_reply_to":"7f231b9d_65c4c9f5","updated":"2017-06-28 22:00:59.000000000","message":"The docstring below suggests that new base classes override this method, which is what DisplayCommandBase does.  Note that there is also a difference in what is returned by run() between Command and DisplayCommandBase.\n\nI suspect Doug may rather add the hooks to DisplayCommandBase.run() rather than call this run() via super() here because they need to happen in a different order. (I don\u0027t have enough of this in my head right now to have a strong opinion on that.)\n\nEither way I think this review is OK to merge, DisplayCommandBase.run() will need to be addressed before the next release.","commit_id":"cb56c4d1f3958ce7be0eaf5b804a133f0e0648a4"}],"cliff/hooks.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d11319dbd07f7e342fda095d8274aa385ea220c5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        :param parsed_args: The arguments to the command."},{"line_number":52,"context_line":"        :paramtype parsed_args: argparse.Namespace"},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @abc.abstractmethod"},{"line_number":56,"context_line":"    def after(self, parsed_args, return_code):"},{"line_number":57,"context_line":"        \"\"\"Called after the command\u0027s take_action() method."}],"source_content_type":"text/x-python","patch_set":2,"id":"bf091321_9f66a551","line":54,"updated":"2017-06-08 09:56:53.000000000","message":"side note: I would have guessed you\u0027d need a \u0027pass\u0027 here for the noop, but it looks like the docstring is good enough. Who knew?","commit_id":"089b3f718c9f8cc77a4979ce3fb90e937794b8db"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0f44fb6be33adaccc37cdc31011db6884fedfd9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"Return text to add to the command help epilog.\""},{"line_number":43,"context_line":"        return \u0027\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @abc.abstractmethod"},{"line_number":46,"context_line":"    def before(self, parsed_args):"},{"line_number":47,"context_line":"        \"\"\"Called before the command\u0027s take_action() method."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_7635f745","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":23},"updated":"2017-06-13 13:43:15.000000000","message":"This means all hooks need to implement before and after hook.\nHow about removing @abstractmethod ?","commit_id":"cb56c4d1f3958ce7be0eaf5b804a133f0e0648a4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f9ff316a164a2284cc120fe9537552d11f9b700f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"Return text to add to the command help epilog.\""},{"line_number":43,"context_line":"        return \u0027\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @abc.abstractmethod"},{"line_number":46,"context_line":"    def before(self, parsed_args):"},{"line_number":47,"context_line":"        \"\"\"Called before the command\u0027s take_action() method."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_c5a95d7c","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":23},"in_reply_to":"7f231b9d_7635f745","updated":"2017-06-15 16:49:44.000000000","message":"It was answered in the parent patch and I now understand it is no problem.","commit_id":"cb56c4d1f3958ce7be0eaf5b804a133f0e0648a4"}],"demoapp/cliffdemo/hook.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d11319dbd07f7e342fda095d8274aa385ea220c5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        return \u0027extension epilog text\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def before(self, parsed_args):"},{"line_number":33,"context_line":"        self.cmd.app.stdout.write(\u0027before\\n\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def after(self, parsed_args, return_code):"},{"line_number":36,"context_line":"        self.cmd.app.stdout.write(\u0027after\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf091321_bf94c9e9","line":33,"range":{"start_line":33,"start_character":35,"end_line":33,"end_character":41},"updated":"2017-06-08 09:56:53.000000000","message":"could you make this a little more verbose so the examples on the next page are a bit more meaningful? Perhaps\n\n    \u0027text generated by the \"before\" hook\u0027","commit_id":"089b3f718c9f8cc77a4979ce3fb90e937794b8db"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d11319dbd07f7e342fda095d8274aa385ea220c5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        self.cmd.app.stdout.write(\u0027before\\n\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def after(self, parsed_args, return_code):"},{"line_number":36,"context_line":"        self.cmd.app.stdout.write(\u0027after\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf091321_7f9e3108","line":36,"range":{"start_line":36,"start_character":35,"end_line":36,"end_character":40},"updated":"2017-06-08 09:56:53.000000000","message":"ditto","commit_id":"089b3f718c9f8cc77a4979ce3fb90e937794b8db"}]}
