saída de ajuda monolítica de subparser argparse

Meu argumento tem apenas 3 flags (store_true) no nível superior, todo o restante é tratado por subparsers. Quando eu corromyprog.py --help, a saída mostra uma lista de todos os subcomandos, como normal,{sub1, sub2, sub3, sub4, ...}. Então, o padrão está funcionando bem ...

Eu normalmente não consigo lembrar o nome exato do subcomando que preciso e todas as suas opções. Então acabo fazendo 2 pesquisas de ajuda:

myprog.py --help
myprog.py sub1 --help

Eu faço isso com tanta freqüência que decidi encaixar isso em um único passo. Eu preferiria que minha ajuda de nível superior gerasse um grande resumo e, em seguida, percorresse a lista manualmente. Eu acho que é muito mais rápido (pelo menos para mim).

Eu estava usando um RawDescriptionHelpFormatter e digitando a saída de ajuda longa manualmente. Mas agora eu tenho muitos subcomandos, e está se tornando uma dor para gerenciar.

Existe uma maneira de obter uma saída de ajuda detalhada com apenas uma chamada de programa?

Se não, como posso iterar os subparsers da minha instância argparse e, em seguida, recuperar a saída da ajuda individualmente de cada uma delas (que depois colarei depois)?

Aqui está um esboço rápido da minha configuração de argouse. Eu limpei / limpei o código um pouco, então isso pode não funcionar sem um pouco de ajuda.

parser = argparse.ArgumentParser(
        prog='myprog.py',
        formatter_class=argparse.RawDescriptionHelpFormatter,
        description=textwrap.dedent(""" You can manually type Help here """) )

parser.add_argument('--debuglog', action='store_true', help='Verbose logging for debug purposes.')
parser.add_argument('--ipyonexit', action='store_true', help='Drop into an embeded Ipython session instead of exiting command.')

subparser = parser.add_subparsers()

### --- Subparser B
parser_b = subparser.add_parser('pdfreport', description="Used to output reports in PDF format.")
parser_b.add_argument('type', type=str, choices=['flatlist', 'nested', 'custom'],
                        help="The type of PDF report to generate.")
parser_b.add_argument('--of', type=str, default='',
                        help="Override the path/name of the output file.")
parser_b.add_argument('--pagesize', type=str, choices=['letter', '3x5', '5x7'], default='letter',
                        help="Override page size in output PDF.")
parser_b.set_defaults(func=cmd_pdf_report)

### ---- Subparser C
parser_c = subparser.add_parser('dbtables', description="Used to perform direct DB import/export using XLS files.")
parser_c.add_argument('action', type=str, choices=['push', 'pull', 'append', 'update'],
                        help="The action to perform on the Database Tables.")
parser_c.add_argument('tablename', nargs="+",
                        help="The name(s) of the DB-Table to operate on.")
parser_c.set_defaults(func=cmd_db_tables)

args = parser.parse_args()
args.func(args)

questionAnswers(5)

yourAnswerToTheQuestion