)]}'
{"setup.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"644960476aa45666c86f0a2759c911b275675c64","unresolved":false,"context_lines":[{"line_number":27,"context_line":"setuptools.setup("},{"line_number":28,"context_line":"    setup_requires\u003d[\u0027pbr\u0027],"},{"line_number":29,"context_line":"    pbr\u003dTrue,"},{"line_number":30,"context_line":"    install_requires\u003d[\u0027cliff\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_0c6f112c","line":30,"updated":"2015-07-01 04:56:18.000000000","message":"just question: why we need to define install_requires here even if requirements.txt contains it?","commit_id":"1075ec51db818531c303efb5ea47893552b5fed9"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"70f430f462b35c0a23c4e7ae7d261c1c11c8defa","unresolved":false,"context_lines":[{"line_number":27,"context_line":"setuptools.setup("},{"line_number":28,"context_line":"    setup_requires\u003d[\u0027pbr\u0027],"},{"line_number":29,"context_line":"    pbr\u003dTrue,"},{"line_number":30,"context_line":"    install_requires\u003d[\u0027cliff\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_a83911a6","line":30,"in_reply_to":"ba3cc151_0c6f112c","updated":"2015-07-01 15:52:43.000000000","message":"Yep good call, didn\u0027t even notice here when I rebased the original patch.","commit_id":"1075ec51db818531c303efb5ea47893552b5fed9"}],"tempest/cmd/main.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"644960476aa45666c86f0a2759c911b275675c64","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import sys"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cliff.app import App"},{"line_number":18,"context_line":"from cliff.commandmanager import CommandManager"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Main(App):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_4cac39a0","line":18,"updated":"2015-07-01 04:56:18.000000000","message":"Why don\u0027t here import modules instead of classes?\n\nI saw akanda-rug code for reference of cliff\u0027s usage and that is\n\n from cliff import app\n from cliff import commandmanager\n\nbasically, current import way is against a pep8 rule which is disabled on Tempest. but better to import modules on right manner.","commit_id":"1075ec51db818531c303efb5ea47893552b5fed9"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"70f430f462b35c0a23c4e7ae7d261c1c11c8defa","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import sys"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cliff.app import App"},{"line_number":18,"context_line":"from cliff.commandmanager import CommandManager"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Main(App):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_284e613b","line":18,"in_reply_to":"ba3cc151_4cac39a0","updated":"2015-07-01 15:52:43.000000000","message":"Done","commit_id":"1075ec51db818531c303efb5ea47893552b5fed9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"644960476aa45666c86f0a2759c911b275675c64","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def __init__(self):"},{"line_number":26,"context_line":"        super(Main, self).__init__("},{"line_number":27,"context_line":"            description\u003d\u0027Tempest cli application\u0027,"},{"line_number":28,"context_line":"            version\u003d\u00270.1\u0027,"},{"line_number":29,"context_line":"            command_manager\u003dCommandManager(\u0027tempest.cm\u0027),"},{"line_number":30,"context_line":"            )"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ac93854e","line":28,"updated":"2015-07-01 04:56:18.000000000","message":"I think this version is important and better to define the version on the other place. for example,\n\n TEMPEST_CLI_VERSION \u003d \u00270.1\u0027\n\nat line 19","commit_id":"1075ec51db818531c303efb5ea47893552b5fed9"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"70f430f462b35c0a23c4e7ae7d261c1c11c8defa","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def __init__(self):"},{"line_number":26,"context_line":"        super(Main, self).__init__("},{"line_number":27,"context_line":"            description\u003d\u0027Tempest cli application\u0027,"},{"line_number":28,"context_line":"            version\u003d\u00270.1\u0027,"},{"line_number":29,"context_line":"            command_manager\u003dCommandManager(\u0027tempest.cm\u0027),"},{"line_number":30,"context_line":"            )"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_c86575b5","line":28,"in_reply_to":"ba3cc151_ac93854e","updated":"2015-07-01 15:52:43.000000000","message":"I agree a global makes sense. I\u0027ll move it up there","commit_id":"1075ec51db818531c303efb5ea47893552b5fed9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8b03e0f67f021b2ec81180f498c8ccd216d28525","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Main(app.App):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    log \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self):"},{"line_number":28,"context_line":"        super(Main, self).__init__("}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_6995483d","line":25,"updated":"2015-07-01 18:01:39.000000000","message":"Usually \"log\" variable is defined before class.\n\n    import logging\n    import sys\n\n    from cliff import app\n    from cliff import commandmanager\n\n    LOG \u003d logging.getLogger(__name__)\n\n    TEMPEST_CLI_VERSION \u003d \u00270.1\u0027\n    \n\n    Class Main(app.App):\n    ...","commit_id":"4af1d0274695d215504df91f8de8f76f8df343d4"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ec110bb7bcdf849c4150cdd6fc020ddd018a94e8","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Main(app.App):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    log \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self):"},{"line_number":28,"context_line":"        super(Main, self).__init__("}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_a88b181e","line":25,"in_reply_to":"ba3cc151_6995483d","updated":"2015-07-02 15:39:21.000000000","message":"cliff applications actually use self.LOG. It looks like our demoapp is out of date with the base class. The logger in self.LOG is given a name based on the command line program name, where this one is given a name based on the module containing the application class.","commit_id":"4af1d0274695d215504df91f8de8f76f8df343d4"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8b03e0f67f021b2ec81180f498c8ccd216d28525","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(Main, self).__init__("},{"line_number":29,"context_line":"            description\u003d\u0027Tempest cli application\u0027,"},{"line_number":30,"context_line":"            version\u003dTEMPEST_CLI_VERSION,"},{"line_number":31,"context_line":"            command_manager\u003dcommandmanager.CommandManager(\u0027tempest.cm\u0027),"},{"line_number":32,"context_line":"            )"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def initialize_app(self, argv):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_0c6b6a86","line":31,"updated":"2015-07-01 18:01:39.000000000","message":"Small improvement\n\n    from cliff import commandmanager as cm\n    ...\n    def __init__(self):\t\n        super(Main, self).__init__(\n        description\u003d\u0027Tempest cli application\u0027,\n        version\u003dTEMPEST_CLI_VERSION,\n        command_manager\u003dcm.CommandManager(\u0027tempest.cm\u0027),\n    )","commit_id":"4af1d0274695d215504df91f8de8f76f8df343d4"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8b03e0f67f021b2ec81180f498c8ccd216d28525","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def main(argv\u003dsys.argv[1:]):"},{"line_number":47,"context_line":"    the_app \u003d Main()"},{"line_number":48,"context_line":"    return the_app.run(argv)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_89420c67","line":47,"updated":"2015-07-01 18:01:39.000000000","message":"the_app -\u003e application or cli_app\n\nAn alternative you can do as follows:\n\n    from cliff import app as cli_app\n    ...\n\n    class Main(cli_app.App)\n    ...\n\n    def main(argv\u003dsys.argv[1:]):\n        app \u003d Main()\n        ...","commit_id":"4af1d0274695d215504df91f8de8f76f8df343d4"}]}
