¿Cómo se obtiene argparse para elegir un subparser predeterminado?

Tengo el siguiente código enscript.py:

import argparse

parser = argparse.ArgumentParser()
sp = parser.add_subparsers(dest='command')
sp.default = 'a'

a_parser = sp.add_parser('a')
b_parser = sp.add_parser('b')

a_parser.add_argument('--thing', default='thing')
b_parser.add_argument('--nothing', default='nothing')

args = parser.parse_args()
print(args)

Puedo llamar a esto tres formas diferentes:

$ python3 script.py
Namespace(command='a')
$ python3 script.py a
Namespace(command='a', thing='thing')
$ python3 script.py b
Namespace(command='b', nothing='nothing')

Solo hay un problema con esto: lo que yoquerer es que si proporciono cero argumentos en la línea de comando es paraa_parser para ser el que termina analizando y haciendo cosas. Claramente no lo es, elsp.default solo está configurandocommand='a', no es lo que esperaba, es decir, "Oh, sí, el usuario no proporcionó ningún argumento en la línea de comando, pero sé que esto debería ser procesado pora_parser. Aqui estaNamespace(command='a', thing='thing')! "

¿Hay alguna manera de que yopuede hacer esto con argparse? He buscado algunas opciones diferentes, pero ninguna de ellas parece proporcionar realmente lo que busco. Supongo que podría hacer algunas maniobras haciendo 3 ArgumentParsers distintos y luego pasar los argumentos a cada uno de ellos, aunque eso suena un poco desagradable.

¿Alguna mejor opción?

Respuestas a la pregunta(1)

Su respuesta a la pregunta