Условный подпараметр на основе взаимоисключающего группового аргумента

Я работаю над расширением кода в credstash с моим кодом здесь:

https://github.com/willcrain1/credstash

Моя проблема в том, что я хотел бы добавить обязательный аргумент, но только если вы выберете -b в качестве одного из взаимоисключающих (вам нужно будет указать имя сегмента, а также имя 'credstash'), поэтому для s3 требуются 2 параметра, где Dynamodb - аргумент - t требует только одного (только имя таблицы).

Прямо сейчас в коде уже есть подпараперы для действий, которые вы хотите предпринять. Я новичок в python, настолько плохо знаком с argparse, поэтому любые советы по эффективному способу добавления условного параметра -c Credstash, но только при использовании -b, приветствуются.

usage: credstash [-h] [-r REGION] [-b BUCKET | -t TABLE] [-p PROFILE | -n ARN] {delete,get,getall,list,put,setup} ...

1 ответ

Решение

Скопировано из моего комментария:

Попробуйте установить nargs=2 за -b, Использование будет выглядеть как

[-b BUCKET BUCKET | -t TABLE]

Добавление metavar=('bucket', 'credstash') (кортеж, не список) должен изменить использование на:

[-b bucket credstach | -t TABLE]
Другие вопросы по тегам