Subcomandos argparse com namespaces aninhados

Fazargparse fornecer recursos internos para que ele analise grupos ou analisadores em seus próprios namespaces? Eu sinto que devo estar perdendo uma opção em algum lugar.

Editar: Este exemplo provavelmente não é exatamente o que eu deveria estar fazendo para estruturar o analisador para atingir meu objetivo, mas foi o que eu trabalhei até agora. Meu objetivo específico é poder fornecer grupos de opções de subparsers que são analisados ​​em campos de namespace. A idéia que tive com os pais era simplesmente usar opções comuns para esse mesmo propósito.

Exemplo:

import argparse

# Main parser
main_parser = argparse.ArgumentParser()
main_parser.add_argument("-common")

# filter parser
filter_parser = argparse.ArgumentParser(add_help=False)
filter_parser.add_argument("-filter1")
filter_parser.add_argument("-filter2")

# sub commands
subparsers = main_parser.add_subparsers(help='sub-command help')

parser_a = subparsers.add_parser('command_a', help="command_a help", parents=[filter_parser])
parser_a.add_argument("-foo")
parser_a.add_argument("-bar")

parser_b = subparsers.add_parser('command_b', help="command_b help", parents=[filter_parser])
parser_b.add_argument("-biz")
parser_b.add_argument("-baz")

# parse
namespace = main_parser.parse_args()
print namespace

Isso é o que eu obtenho, obviamente:

$ python test.py command_a -foo bar -filter1 val
Namespace(bar=None, common=None, filter1='val', filter2=None, foo='bar')

Mas isso é o que eu realmente procuro:

Namespace(bar=None, common=None, foo='bar', 
          filter=Namespace(filter1='val', filter2=None))

E ainda mais grupos de opções já analisadas em namespaces:

Namespace(common=None, 
          foo='bar', bar=None,  
          filter=Namespace(filter1='val', filter2=None),
          anotherGroup=Namespace(bazers='val'),
          anotherGroup2=Namespace(fooers='val'),
          )

Eu encontrei umquestão relacionada aqui mas envolve alguma análise personalizada e parece abranger apenas uma circunstância realmente específica.

Existe uma opção em algum lugar para dizer à argparse para analisar certos grupos em campos com namespaces?

questionAnswers(6)

yourAnswerToTheQuestion