¿Cómo usar correctamente los subparsers argparse?

He estado buscando entre los ejemplos de subparser aquí y en general, pero parece que no puedo resolver esta cosa aparentemente simple.

Tengo dos tipos de var, de los cuales uno tiene restricciones, por lo que pensé que el subparser era el camino a seguir. p.ej. -t permite ya sea "A" o "B". Si el usuario pasa "A", también es necesario que especifique si es "a1" o "a2". Si pasan solo "B" entonces nada.

¿Puedo hacer esto y hacer que argparse me devuelva qué tipo de "A" se aprobó o si solo fue "B"?

Lo de abajo parece funcionar, pero por alguna razón se rompe cuando pasa algo después del subpunto.

p.ej. desde un terminal de linux

>> python test01.py -t A a1 -v 61

errores con ...

usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v

Esperemos que tenga sentido.

El código:

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')

parser.add_argument("-t",
                    choices = ["A", "B"],
                    dest = "type",
                    required=True,
                    action='store',
                    help="Some help blah blah")

cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')

cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')


parser.add_argument("-v",
                    nargs = '+',
                    required=True,
                    dest = "version",
                    type=int,
                    action='store',
                    help="some version help blah blah")   

argument = parser.parse_args()

print argument.type
print argument.version

Respuestas a la pregunta(1)

Su respuesta a la pregunta