)]}'
{"cliff/sphinxext.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ba0bdc2b06f0a90cdb26fc07c06baf997e9a5b5f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        #"},{"line_number":78,"context_line":"        # [1] http://www.sphinx-doc.org/en/stable/extdev/markupapi.html"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        source_name \u003d \u0027\u003c\u0027 + __name__ + \u0027\u003e\u0027"},{"line_number":81,"context_line":"        result \u003d statemachine.ViewList()"},{"line_number":82,"context_line":"        for line in statemachine.string2lines("},{"line_number":83,"context_line":"                description, tab_width\u003d4, convert_whitespace\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8af1bd04","line":80,"updated":"2017-03-30 16:05:53.000000000","message":"I wonder if we could include some more detail about the actual source location here? Maybe the command name, at least, if not the class name of the command?","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28cbb1440c73618db65e17ff90d1d643fc733242","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        #"},{"line_number":78,"context_line":"        # [1] http://www.sphinx-doc.org/en/stable/extdev/markupapi.html"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        source_name \u003d \u0027\u003c\u0027 + __name__ + \u0027\u003e\u0027"},{"line_number":81,"context_line":"        result \u003d statemachine.ViewList()"},{"line_number":82,"context_line":"        for line in statemachine.string2lines("},{"line_number":83,"context_line":"                description, tab_width\u003d4, convert_whitespace\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_d577213a","line":80,"in_reply_to":"ffe62b97_8af1bd04","updated":"2017-04-03 15:42:26.000000000","message":"Done","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ba0bdc2b06f0a90cdb26fc07c06baf997e9a5b5f","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        return [section]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def run(self):"},{"line_number":99,"context_line":"        if \u0027module\u0027 in self.options and \u0027func\u0027 in self.options:"},{"line_number":100,"context_line":"            module_name \u003d self.options[\u0027module\u0027]"},{"line_number":101,"context_line":"            attr_name \u003d self.options[\u0027func\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_2af4f1ce","line":98,"updated":"2017-03-30 16:05:53.000000000","message":"It would be useful if this directive could be used without knowing the code layout. Can we use the cliff application namespace and plugin name instead, then use the loader code from cliff to import the plugin?","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"4266b4daa5373fe5e2e2a792cf9153bfd77b7430","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        return [section]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def run(self):"},{"line_number":99,"context_line":"        if \u0027module\u0027 in self.options and \u0027func\u0027 in self.options:"},{"line_number":100,"context_line":"            module_name \u003d self.options[\u0027module\u0027]"},{"line_number":101,"context_line":"            attr_name \u003d self.options[\u0027func\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_69f17095","line":98,"in_reply_to":"dfeb2761_50ab2c88","updated":"2017-04-04 16:57:08.000000000","message":"Given a namespace value, you can construct a CommandManager and then pass the command to it to get the actual command class. http://git.openstack.org/cgit/openstack/cliff/tree/cliff/commandmanager.py#n37\n\nThe namespaces are defined in the setup.cfg for the application, and anyone creating a plugin has to know the value, so I don\u0027t think it\u0027s unreasonable to expect them to provide it here.\n\nIn the case of python-openstackclient, there are several namespaces to handle different API versions, but I think if any one is specified it will work with the cliff command manager for the purpose of locating the class to generate the docs.","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28cbb1440c73618db65e17ff90d1d643fc733242","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        return [section]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def run(self):"},{"line_number":99,"context_line":"        if \u0027module\u0027 in self.options and \u0027func\u0027 in self.options:"},{"line_number":100,"context_line":"            module_name \u003d self.options[\u0027module\u0027]"},{"line_number":101,"context_line":"            attr_name \u003d self.options[\u0027func\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_50ab2c88","line":98,"in_reply_to":"ffe62b97_2af4f1ce","updated":"2017-04-03 15:42:26.000000000","message":"Sure, once I figure out how to do that :) Any guidance here would be appreciated. I\u0027m marking this up as a \u0027TODO\u0027 while I work on the actual output.","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ba0bdc2b06f0a90cdb26fc07c06baf997e9a5b5f","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"def setup(app):"},{"line_number":116,"context_line":"    # TODO(stephenfin): Add a global \u0027prefix\u0027 configuration option"},{"line_number":117,"context_line":"    app.add_directive(\u0027cliff\u0027, CliffDirective)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8a3f7d86","line":117,"updated":"2017-03-30 16:05:53.000000000","message":"The directive name could be more descriptive. For example, we might have other directives for listing the commands for an application.  How about calling this one cliff-command?","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"28cbb1440c73618db65e17ff90d1d643fc733242","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"def setup(app):"},{"line_number":116,"context_line":"    # TODO(stephenfin): Add a global \u0027prefix\u0027 configuration option"},{"line_number":117,"context_line":"    app.add_directive(\u0027cliff\u0027, CliffDirective)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfeb2761_50b8cc74","line":117,"in_reply_to":"ffe62b97_8a3f7d86","updated":"2017-04-03 15:42:26.000000000","message":"Done","commit_id":"1e778b2c3789f77103ed820fb9a78fe20c18294b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d62f4f2b20ff5c18850078ab3dd5502d0d53909","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        for line in _format_parser(parser):"},{"line_number":217,"context_line":"            result.append(line, source_name)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        self.state.nested_parse(result, 0, section)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        return [section]"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_29f24871","line":219,"updated":"2017-04-04 17:06:38.000000000","message":"I\u0027ve used nested_parse_with_titles() elsewhere. I\u0027m not sure what the difference is, though. Maybe just that the nested_parse() method doesn\u0027t support inline titles? Do we anticipate having those?\n\nhttps://github.com/sphinxcontrib/sphinxcontrib.datatemplates/blob/master/sphinxcontrib/datatemplates/directive.py#L81","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2295544756084f2def4ee79da52f376d01721a0e","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        for line in _format_parser(parser):"},{"line_number":217,"context_line":"            result.append(line, source_name)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        self.state.nested_parse(result, 0, section)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        return [section]"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_14daf44a","line":219,"in_reply_to":"dfeb2761_29f24871","updated":"2017-04-05 00:02:25.000000000","message":"I saw that, yes. As you say, it appears one handles titles and the other does not [1]. I didn\u0027t see the need to handle titles thus I did not use that. Happy to switch if if you\u0027d prefer that though\n\n[1] http://www.sphinx-doc.org/en/stable/extdev/markupapi.html#parsing-directive-content-as-rest","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2295544756084f2def4ee79da52f376d01721a0e","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"def setup(app):"},{"line_number":247,"context_line":"    app.add_directive(\u0027cliff-command\u0027, CliffCommandDirective)"},{"line_number":248,"context_line":"    app.add_config_value(\u0027click_command_prog\u0027, \u0027\u0027, True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_54ebdcda","line":248,"range":{"start_line":248,"start_character":26,"end_line":248,"end_character":44},"updated":"2017-04-05 00:02:25.000000000","message":"This was wrong too. oops","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    # Optional actions are what would be known as flags or options in other"},{"line_number":125,"context_line":"    # libraries, while positional actions would generally be known as"},{"line_number":126,"context_line":"    # arguments. We present these slightly differently."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    for action in parser._get_optional_actions():"},{"line_number":129,"context_line":"        for line in _format_optional_action(action):"},{"line_number":130,"context_line":"            yield line"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_c7067087","line":127,"updated":"2017-04-06 20:40:26.000000000","message":"I\u0027m a little uncomfortable with using the private methods of the argument parser here. I suppose they\u0027re unlikely to change.\n\nI don\u0027t see any special treatment for different groups of options, which can have their own descriptions. I think that\u0027s OK for the first version, but have you given any thought to dealing with those?","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"bd1d314b636f2cc46e2b4c1cdeb77e5b1fd082df","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    # Optional actions are what would be known as flags or options in other"},{"line_number":125,"context_line":"    # libraries, while positional actions would generally be known as"},{"line_number":126,"context_line":"    # arguments. We present these slightly differently."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    for action in parser._get_optional_actions():"},{"line_number":129,"context_line":"        for line in _format_optional_action(action):"},{"line_number":130,"context_line":"            yield line"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_638bf81e","line":127,"in_reply_to":"bff0334d_2a3caec6","updated":"2017-04-07 13:19:10.000000000","message":"Yeah, like I said, I think it\u0027s OK, just something that caught my eye.","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    # Optional actions are what would be known as flags or options in other"},{"line_number":125,"context_line":"    # libraries, while positional actions would generally be known as"},{"line_number":126,"context_line":"    # arguments. We present these slightly differently."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    for action in parser._get_optional_actions():"},{"line_number":129,"context_line":"        for line in _format_optional_action(action):"},{"line_number":130,"context_line":"            yield line"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_2a3caec6","line":127,"in_reply_to":"bff0334d_c7067087","updated":"2017-04-07 09:29:20.000000000","message":"\u003e I\u0027m a little uncomfortable with using the private methods of the argument parser here. I suppose they\u0027re unlikely to change.\n\nThe \u0027argparse\u0027 is essentially unchanged from Python 2.7 to 3.6 [1]. While I\u0027m also not a fan of using private methods, argparse doesn\u0027t expose its actions publicly so we need to work around that [2].\n\n \u003e I don\u0027t see any special treatment for different groups of options, which can have their own descriptions. I think that\u0027s OK for the first version, but have you given any thought to dealing with those?\n\nIndeed I did. From what I could see, this wasn\u0027t necessary for python-openstackclient. As such, adding this support would be a case of overengineering. We can come back and fix it later if people need it \n\n[1] https://github.com/python/cpython/commits/v3.6.0/Lib/argparse.py\n[2] https://github.com/python/cpython/blob/v3.6.0/Lib/argparse.py#L1716-L1724","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :param title: Title of command"},{"line_number":171,"context_line":"        :param prog: Name of command, as used on the command line"},{"line_number":172,"context_line":"        :param command: Instance of `cliff.command.Command`"},{"line_number":173,"context_line":"        :param prefix: Prefix to apply before command, if any"},{"line_number":174,"context_line":"        :returns: A list of nested docutil nodes"},{"line_number":175,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_474b802a","line":172,"updated":"2017-04-06 20:40:26.000000000","message":"Instance or subclass?","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :param title: Title of command"},{"line_number":171,"context_line":"        :param prog: Name of command, as used on the command line"},{"line_number":172,"context_line":"        :param command: Instance of `cliff.command.Command`"},{"line_number":173,"context_line":"        :param prefix: Prefix to apply before command, if any"},{"line_number":174,"context_line":"        :returns: A list of nested docutil nodes"},{"line_number":175,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_8a9e1ab6","line":172,"in_reply_to":"bff0334d_474b802a","updated":"2017-04-07 09:29:20.000000000","message":"I meant \"instance of a subclass\", but seeing as we initialize below \"subclass\" is correct, yes","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :param prefix: Prefix to apply before command, if any"},{"line_number":174,"context_line":"        :returns: A list of nested docutil nodes"},{"line_number":175,"context_line":"        \"\"\""},{"line_number":176,"context_line":"        command \u003d command(None, None)"},{"line_number":177,"context_line":"        parser \u003d command.get_parser(prog)"},{"line_number":178,"context_line":"        description \u003d command.get_description()"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_875aa8f0","line":176,"updated":"2017-04-06 20:40:26.000000000","message":"Is this instantiating the class? Can we change the argument or variable name to avoid overwriting one?","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :param prefix: Prefix to apply before command, if any"},{"line_number":174,"context_line":"        :returns: A list of nested docutil nodes"},{"line_number":175,"context_line":"        \"\"\""},{"line_number":176,"context_line":"        command \u003d command(None, None)"},{"line_number":177,"context_line":"        parser \u003d command.get_parser(prog)"},{"line_number":178,"context_line":"        description \u003d command.get_description()"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_aa055ec4","line":176,"in_reply_to":"bff0334d_875aa8f0","updated":"2017-04-07 09:29:20.000000000","message":"Done","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    def run(self):"},{"line_number":222,"context_line":"        self.env \u003d self.state.document.settings.env"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        prog_re \u003d self.options.get(\u0027prog\u0027)"},{"line_number":225,"context_line":"        prog_prefix \u003d self.env.config.autoprogram_cliff_prog or \u0027\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        manager \u003d commandmanager.CommandManager(self.arguments[0])"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_27e2bc02","line":224,"updated":"2017-04-06 20:40:26.000000000","message":"An fnmatch pattern isn\u0027t really a regex. Call this command_pattern?","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    def run(self):"},{"line_number":222,"context_line":"        self.env \u003d self.state.document.settings.env"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        prog_re \u003d self.options.get(\u0027prog\u0027)"},{"line_number":225,"context_line":"        prog_prefix \u003d self.env.config.autoprogram_cliff_prog or \u0027\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        manager \u003d commandmanager.CommandManager(self.arguments[0])"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_6a7e366c","line":224,"in_reply_to":"bff0334d_27e2bc02","updated":"2017-04-07 09:29:20.000000000","message":"Done","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        prog_prefix \u003d self.env.config.autoprogram_cliff_prog or \u0027\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        manager \u003d commandmanager.CommandManager(self.arguments[0])"},{"line_number":228,"context_line":"        if prog_re:"},{"line_number":229,"context_line":"            commands \u003d ["},{"line_number":230,"context_line":"                x for x in manager.commands if fnmatch.fnmatch(x, prog_re)]"},{"line_number":231,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_67b9e4e7","line":228,"updated":"2017-04-06 20:40:26.000000000","message":"I wonder if we want to (later) move this search logic into the CommandManager, instead of leaving it here. It might prove useful in command line help, too (\"show me the commands like \u0027foo *\u0027).","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        prog_prefix \u003d self.env.config.autoprogram_cliff_prog or \u0027\u0027"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        manager \u003d commandmanager.CommandManager(self.arguments[0])"},{"line_number":228,"context_line":"        if prog_re:"},{"line_number":229,"context_line":"            commands \u003d ["},{"line_number":230,"context_line":"                x for x in manager.commands if fnmatch.fnmatch(x, prog_re)]"},{"line_number":231,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff0334d_0a932aa5","line":228,"in_reply_to":"bff0334d_67b9e4e7","updated":"2017-04-07 09:29:20.000000000","message":"Not a bad idea. Let\u0027s add a TODO for just that","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"}],"doc/source/sphinx-integration.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d62f4f2b20ff5c18850078ab3dd5502d0d53909","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"cliff supports integration with Sphinx by way of a `Sphinx directive`__."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":".. rst::directive:: cliff-command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   Automatically document an instance of `cliff.command.Command`, including a"},{"line_number":10,"context_line":"   description, usage summary, and overview of all options."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfeb2761_e4548700","line":7,"updated":"2017-04-04 17:06:38.000000000","message":"The content on this page from this point down doesn\u0027t render. I\u0027m not sure why, but this line looks suspicious. Should this directive just be rst:directive (not :: between rst and directive)?\n\nhttp://docs-draft.openstack.org/22/450322/5/check/gate-cliff-docs-ubuntu-xenial/96340cf//doc/build/html/sphinx-integration.html","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2295544756084f2def4ee79da52f376d01721a0e","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"cliff supports integration with Sphinx by way of a `Sphinx directive`__."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":".. rst::directive:: cliff-command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"   Automatically document an instance of `cliff.command.Command`, including a"},{"line_number":10,"context_line":"   description, usage summary, and overview of all options."}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfeb2761_b4d10826","line":7,"in_reply_to":"dfeb2761_e4548700","updated":"2017-04-05 00:02:25.000000000","message":"Correct - that was a typo","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d62f4f2b20ff5c18850078ab3dd5502d0d53909","unresolved":false,"context_lines":[{"line_number":16,"context_line":"          :func: AddFixedIP"},{"line_number":17,"context_line":"          :prog: server add fixed ip"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"   The following directive options are required:"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"   `:module:`"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfeb2761_497b4cbd","line":19,"updated":"2017-04-04 17:06:38.000000000","message":"Ideally the 2 values needed would be the namespace and the command name (what you have a prog now, always without the prefix command). The module and func values can be derived using the CommandManager (see my recent comment on an earlier patchset).","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2295544756084f2def4ee79da52f376d01721a0e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"          :func: AddFixedIP"},{"line_number":17,"context_line":"          :prog: server add fixed ip"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"   The following directive options are required:"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"   `:module:`"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfeb2761_eb8a0abd","line":19,"in_reply_to":"dfeb2761_497b4cbd","updated":"2017-04-05 00:02:25.000000000","message":"Done","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d62f4f2b20ff5c18850078ab3dd5502d0d53909","unresolved":false,"context_lines":[{"line_number":48,"context_line":"   The following global configuration values are supported. These should be"},{"line_number":49,"context_line":"   placed in `conf.py`:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"   `click_command_prog`"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"     The top-level program name, which will be prefixed before all commands."},{"line_number":54,"context_line":"     While this can be accomplished using the ``:prog:`` option, this reduces"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfeb2761_e9a8e08c","line":51,"updated":"2017-04-04 17:06:38.000000000","message":"click?","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2295544756084f2def4ee79da52f376d01721a0e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"   The following global configuration values are supported. These should be"},{"line_number":49,"context_line":"   placed in `conf.py`:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"   `click_command_prog`"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"     The top-level program name, which will be prefixed before all commands."},{"line_number":54,"context_line":"     While this can be accomplished using the ``:prog:`` option, this reduces"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfeb2761_d4b80ce6","line":51,"in_reply_to":"dfeb2761_e9a8e08c","updated":"2017-04-05 00:02:25.000000000","message":"I\u0027m working on an equivalent package from the \u0027click\u0027 library :) copy-paste typo","commit_id":"39786922ce33b092c9223aa6cf10a7998089078b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"   In addition, the following directive options can be supplied:"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"   `:prog:`"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"     The name of the command, as it would appear if called from the command"},{"line_number":27,"context_line":"     line without the executable name. This will be defined in `setup.cfg` or"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bff0334d_6712040c","line":24,"updated":"2017-04-06 20:40:26.000000000","message":"Let\u0027s be consistent with naming.\n\nThe main executable is the \"application\".\n\nThe plugin is a \"command\".\n\nThis option should therefore be \"command\".","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"   In addition, the following directive options can be supplied:"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"   `:prog:`"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"     The name of the command, as it would appear if called from the command"},{"line_number":27,"context_line":"     line without the executable name. This will be defined in `setup.cfg` or"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bff0334d_0ac7aa47","line":24,"in_reply_to":"bff0334d_6712040c","updated":"2017-04-07 09:29:20.000000000","message":"Done","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0fddabd21192524bcfe637d9f855495326e76013","unresolved":false,"context_lines":[{"line_number":49,"context_line":"      An equivalent library for use with plain-old :py:mod:`argparse`"},{"line_number":50,"context_line":"      applications."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    Module :py:mod:`sphinx-click`"},{"line_number":53,"context_line":"      An equivalent library for use with :py:mod:`click` applications."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. _example:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bff0334d_87286834","line":52,"updated":"2017-04-06 20:40:26.000000000","message":"I\u0027m not really sure why this reference is relevant to cliff users?","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"beca7760b447b4b6eb1be010269d26a7fac35406","unresolved":false,"context_lines":[{"line_number":49,"context_line":"      An equivalent library for use with plain-old :py:mod:`argparse`"},{"line_number":50,"context_line":"      applications."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    Module :py:mod:`sphinx-click`"},{"line_number":53,"context_line":"      An equivalent library for use with :py:mod:`click` applications."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. _example:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bff0334d_aadd5e15","line":52,"in_reply_to":"bff0334d_87286834","updated":"2017-04-07 09:29:20.000000000","message":"Why else, but to elucidate the user as to the fantastic variety of libraries available in Python?\n\nAlso, shameless self-promotion (I wrote it) :) I\u0027d like to keep it around","commit_id":"e931832b82f9b7b85afe2249a1bb26e37d0e75ed"}]}
