argparse - Combinando analisador pai, sub-analisadores e valores padrão

Eu queria definir diferentes sub-analisadores em um script, com as duas opções herdadas de um pai comum, mas com padrões diferentes. Porém, não funciona como esperado.

Aqui está o que eu fiz:

import argparse

# this is the top level parser
parser = argparse.ArgumentParser(description='bla bla')

# this serves as a parent parser
base_parser = argparse.ArgumentParser(add_help=False)
base_parser.add_argument('-n', help='number', type=int)


# subparsers
subparsers = parser.add_subparsers()
subparser1= subparsers.add_parser('a', help='subparser 1', 
                                   parents=[base_parser])
subparser1.set_defaults(n=50)
subparser2 = subparsers.add_parser('b', help='subparser 2',
                                   parents=[base_parser])
subparser2.set_defaults(n=20)

args = parser.parse_args()
print args

Quando executo o script na linha de comando, é isso que recebo:

$ python subparse.py b
Namespace(n=20)

$ python subparse.py a
Namespace(n=20)

Aparentemente, o segundoset_defaults substitui o primeiro no pai. Como não havia nada sobre isso na documentação do argparse (que é bastante detalhada), pensei que isso poderia ser um bug.

Existe alguma solução simples para isso? Eu poderia verificar oargs variável depois e substituaNone valores com os padrões pretendidos para cada sub-analisador, mas é o que eu esperava que o argparse fizesse por mim.

Este é o Python 2.7, a propósito.

questionAnswers(2)

yourAnswerToTheQuestion