#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 вызывает ошибку конфликта в случае нескольких флагов, начинающихся с одной и той же первой буквы (если используется сокращенная запись).