Google выпустила Python Fire — библиотеку для автоматического создания интерфейсов командной строки

Python Fire способна генерировать интерфейсы командной строки из любого Python-кода. Вам просто нужно вызвать функцию Fire в любой программе на Python, и она автоматически превратится в интерфейс командной строки. Установить библиотеку можно через pip install fire, а исходный код доступен на GitHub.

Как это работает?

Python Fire автоматически превращает ваш код в интерфейс командной строки без какой-либо головной боли. Вам не нужно объявлять аргументы, предоставлять какую-то дополнительную информацию или же писать функцию main, определяющую, как работает ваш код.

Вместо этого вы просто вызываете функцию Fire, и библиотека позаботится обо всем остальном. Python Fire распознает классы, объекты, словари, функции и целые модули, а потом превращает их в интерфейс командной строки вместе с документацией. Причем интерфейс командной строки остается неизменным, даже если исходный код изменился.

Пример:

#!/usr/bin/env python
import fire

class Example(object):
  def hello(self, name='world'):
    """Says hello to the specified name."""
    return 'Hello {name}!'.format(name=name)

def main():
  fire.Fire(Example)

if __name__ == '__main__':
  main()

Наша команда выполнится после того, как мы вызовем функцию Fire. Теперь мы можем использовать класс Example в качестве утилиты командной строки.

$ ./example.py hello
Hello world!
$ ./example.py hello David
Hello David!
$ ./example.py hello --name=Google
Hello Google!

Кто ей пользуется?

Библиотека очень активно используется инженерами Google. Их инструмент для работы с изображениями был создан при помощи Python Fire и Python Imaging Library. В Google Brain используется инструмент для управления экспериментами, созданный при помощи Python Fire.

Что еще в ней есть?

Каждый интерфейс командной строки снабжается интерактивным режимом. Запустите интерфейс командной строки с добавкой --interactive для запуска IPython REPL с результатами вашей команды. Кроме того, многие другие полезные переменные уже определены и готовы к использованию. Для получения полного списка возможностей рекомендуем ознакомиться с официальной документацией.

Источник: блог Google Open Source