)]}'
{"cliff/app.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2cdc1f5e382b0b192b6308c3a7ee261edaf9f309","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            default\u003dNone,"},{"line_number":175,"context_line":"            help\u003d\u0027Specify a file to log output. Disabled by default.\u0027,"},{"line_number":176,"context_line":"        )"},{"line_number":177,"context_line":"        parser.add_argument("},{"line_number":178,"context_line":"            \u0027-e\u0027, \u0027--errexit\u0027,"},{"line_number":179,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":180,"context_line":"            dest\u003d\u0027errexit\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_233ef88b","line":177,"updated":"2017-10-13 23:05:37.000000000","message":"I wonder if we want to implement this as a command instead of a command line switch? Sort of like \"set -e\" and \"set +e\" in the shell, for example?","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2cdc1f5e382b0b192b6308c3a7ee261edaf9f309","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                                        self.command_manager,"},{"line_number":329,"context_line":"                                                        self.stdin,"},{"line_number":330,"context_line":"                                                        self.stdout,"},{"line_number":331,"context_line":"                                                        self.options.errexit,"},{"line_number":332,"context_line":"                                                        )"},{"line_number":333,"context_line":"        return self.interpreter.cmdloop()"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_838fec73","line":331,"updated":"2017-10-13 23:05:37.000000000","message":"This won\u0027t be backwards-compatible because no existing apps will accept the new argument. We\u0027ll need to introspect to see if the argument is wanted before sending it.","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c7acf5f192d2074fe6c7375a3fcc6025384cf781","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                                        self.command_manager,"},{"line_number":329,"context_line":"                                                        self.stdin,"},{"line_number":330,"context_line":"                                                        self.stdout,"},{"line_number":331,"context_line":"                                                        self.options.errexit,"},{"line_number":332,"context_line":"                                                        )"},{"line_number":333,"context_line":"        return self.interpreter.cmdloop()"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_78193720","line":331,"in_reply_to":"5f4e5783_58455b42","updated":"2017-10-14 15:09:20.000000000","message":"Oh, you might be right. I assumed there *was* a way to subclass that app, but if there\u0027s not then it doesn\u0027t matter.","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"be5371260a3c74b309bcf1959a67fb35cadc8311","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                                        self.command_manager,"},{"line_number":329,"context_line":"                                                        self.stdin,"},{"line_number":330,"context_line":"                                                        self.stdout,"},{"line_number":331,"context_line":"                                                        self.options.errexit,"},{"line_number":332,"context_line":"                                                        )"},{"line_number":333,"context_line":"        return self.interpreter.cmdloop()"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_187da37e","line":331,"in_reply_to":"5f4e5783_634f5034","updated":"2017-10-14 14:25:28.000000000","message":"I thought about this and that would be fine with me.  In fact, it eliminates the forced polluting of the option space, and app that already uses -e would get hosed.  The app can add it if that\u0027s how it wants to work.","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"5f6c6da6063a2c53ed1a98850a41c90436d088f6","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                                        self.command_manager,"},{"line_number":329,"context_line":"                                                        self.stdin,"},{"line_number":330,"context_line":"                                                        self.stdout,"},{"line_number":331,"context_line":"                                                        self.options.errexit,"},{"line_number":332,"context_line":"                                                        )"},{"line_number":333,"context_line":"        return self.interpreter.cmdloop()"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_634f5034","line":331,"in_reply_to":"5f4e5783_838fec73","updated":"2017-10-13 23:06:42.000000000","message":"Alternately we could add a method to the interactive app to set the flag, and just call that method after creating the interpreter. That would make it possible to use a command line switch and an interactive command to change the switch.","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"be5371260a3c74b309bcf1959a67fb35cadc8311","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                                                        self.command_manager,"},{"line_number":329,"context_line":"                                                        self.stdin,"},{"line_number":330,"context_line":"                                                        self.stdout,"},{"line_number":331,"context_line":"                                                        self.options.errexit,"},{"line_number":332,"context_line":"                                                        )"},{"line_number":333,"context_line":"        return self.interpreter.cmdloop()"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_58455b42","line":331,"in_reply_to":"5f4e5783_838fec73","updated":"2017-10-14 14:25:28.000000000","message":"I\u0027m not seeing where an existing app fits in to this, the arg is to our own InteractiveApp from interactive.py and there isn\u0027t a way for a calling application to override that class.  Maybe it\u0027s just early...","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"}],"cliff/interactive.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1a64d442f6eab656ead3554f26af1fc87509d9dd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    :param command_manager: A :class:`cliff.commandmanager.CommandManager`"},{"line_number":35,"context_line":"                            instance."},{"line_number":36,"context_line":"    :param stdin: Standard input stream"},{"line_number":37,"context_line":"    :param stdout: Standard output stream"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    use_rawinput \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfbec78f_dbb4ced3","line":37,"updated":"2019-05-11 03:38:53.000000000","message":"It is better to add a description on \"errexit\" here.","commit_id":"9d77e2cb386dbb1dac089e5f7508b3c3f56fcd5d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"04514795edea943c90d3ceece1ad6486124a18ed","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    :param command_manager: A :class:`cliff.commandmanager.CommandManager`"},{"line_number":35,"context_line":"                            instance."},{"line_number":36,"context_line":"    :param stdin: Standard input stream"},{"line_number":37,"context_line":"    :param stdout: Standard output stream"},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    use_rawinput \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_b60f54de","line":37,"in_reply_to":"dfbec78f_dbb4ced3","updated":"2019-08-05 22:05:56.000000000","message":"yes","commit_id":"9d77e2cb386dbb1dac089e5f7508b3c3f56fcd5d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1a64d442f6eab656ead3554f26af1fc87509d9dd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    app_cmd_header \u003d \"Application commands (type help \u003ctopic\u003e):\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, parent_app, command_manager, stdin, stdout,"},{"line_number":45,"context_line":"                 errexit\u003dFalse):"},{"line_number":46,"context_line":"        self.parent_app \u003d parent_app"},{"line_number":47,"context_line":"        if not hasattr(sys.stdin, \u0027isatty\u0027) or sys.stdin.isatty():"},{"line_number":48,"context_line":"            self.prompt \u003d \u0027(%s) \u0027 % parent_app.NAME"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfbec78f_3bc3aa3a","line":45,"updated":"2019-05-11 03:38:53.000000000","message":"question: InteractiveApp is instantiated at app.py L.322 but there is no way to pass errexit in cliff application. How can we use it?","commit_id":"9d77e2cb386dbb1dac089e5f7508b3c3f56fcd5d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"04514795edea943c90d3ceece1ad6486124a18ed","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    app_cmd_header \u003d \"Application commands (type help \u003ctopic\u003e):\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, parent_app, command_manager, stdin, stdout,"},{"line_number":45,"context_line":"                 errexit\u003dFalse):"},{"line_number":46,"context_line":"        self.parent_app \u003d parent_app"},{"line_number":47,"context_line":"        if not hasattr(sys.stdin, \u0027isatty\u0027) or sys.stdin.isatty():"},{"line_number":48,"context_line":"            self.prompt \u003d \u0027(%s) \u0027 % parent_app.NAME"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_960c98ec","line":45,"in_reply_to":"dfbec78f_3bc3aa3a","updated":"2019-08-05 22:05:56.000000000","message":"https://review.opendev.org/#/c/512903/ shows how I was intending to use it from inside an app subclass, I wanted to keep this change small.","commit_id":"9d77e2cb386dbb1dac089e5f7508b3c3f56fcd5d"}],"cliff/tests/test_app.py":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ec08122b2bdd6943c94644608c5654ede31c29ab","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            ret \u003d app.run([\u0027--debug\u0027, \u0027error\u0027])"},{"line_number":124,"context_line":"        except RuntimeError as err:"},{"line_number":125,"context_line":"            self.assertIs(err, app.clean_up.call_args_list[0][0][2])"},{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            self.assertNotEqual(ret, 0)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_c3ade59b","line":125,"range":{"start_line":125,"start_character":44,"end_line":125,"end_character":58},"updated":"2017-10-13 22:16:04.000000000","message":"This should never get called now, remove the entire try/except construct?","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ec08122b2bdd6943c94644608c5654ede31c29ab","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        except RuntimeError as err:"},{"line_number":125,"context_line":"            self.assertIs(err, app.clean_up.call_args_list[0][0][2])"},{"line_number":126,"context_line":"        else:"},{"line_number":127,"context_line":"            self.assertNotEqual(ret, 0)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertTrue(app.clean_up.called)"},{"line_number":130,"context_line":"        call_args \u003d app.clean_up.call_args_list[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f4e5783_03a89d8a","line":127,"range":{"start_line":127,"start_character":38,"end_line":127,"end_character":39},"updated":"2017-10-13 22:16:04.000000000","message":"It feels like there is more checking to do here...","commit_id":"edb96e9940c6c0421fde616d736287d7de4a5394"}]}
