Использование нескольких флагов для одного и того же аргумента функции, запущенной через python-fire

#python #arguments #command-line-interface #python-fire

#python #аргументы #интерфейс командной строки #python-fire

Вопрос:

Я использую библиотеку Google python-fire для автоматизации cli.

У меня есть функция, скажем, внутри code.py :

 def foo(input_path='some default value'):
    doing something...

def main():
    fire.Fire(foo)
  

Теперь я могу использовать $ python code.py foo —input-path ‘некоторый путь’

Но теперь я тоже хочу добавить сокращение -i для той же задачи. Как я могу этого добиться?

Ответ №1:

Использование коротких флагов, когда они однозначны, было введено в последней версии fire v0.2.0.

Если вы обновитесь до последней версии, вы сможете использовать сокращение -i по желанию. Используйте pip install -U fire для обновления.

Ответ №2:

CLI, сгенерированный python-fire, полностью основан на именах аргументов, определенных в сигнатуре функции.

После небольшого исследования я обнаружил эту проблему. Этот PR существенно добавляет эту функциональность, но текущая версия, выпущенная на pypi или conda, не включает эту функцию. Это будет добавлено в следующем выпуске.

В настоящее время можно использовать первую букву вашего аргумента в сокращенной записи только для типов bool. Также обратите внимание, что fire вызывает ошибку конфликта в случае нескольких флагов, начинающихся с одной и той же первой буквы (если используется сокращенная запись).