Библиотека должна была называться анализатором аргументов командной строки (Command-Line Argument Parser, clap), имя оказалось занято, поэтому она называется Plac — clap, почти наоборот. Руководство по использованию не особо информативно, но посмотрите, как мало строк в этом примере:
# hello.py
def hello(name, capitalize=False, repetitions=1):
··"""Здоровается с вами."""
····if capitalize:
········name = name.upper()
····for rep in range(repetitions):
········print('Hello {}'.format(name))
if __name__ == "__main__":
····import plac
····plac.call(hello)
Руководство по использованию выглядит так:
$ python hello.py — help
usage: hello.py [-h] name [capitalize] [repetitions]
Says hello to you.
positional arguments:
··name
··capitalize [False]
···repetitions [1]
optional arguments:
··-h, — help show this help message and exit
Если хотите выполнить преобразование типов для какого-нибудь аргумента до того, как передадите его в функцию, используйте декоратор annotations:
import plac
@plac.annotations(
····name = plac.Annotation("the name to greet", type=str),
····capitalize = plac.Annotation("use allcaps", kind="flag", type=bool),
····repetitions = plac.Annotation("total repetitions", kind="option",
··················type=int)
def hello(name, capitalize=False, repetitions=1):
··"""Здоровается с вами."""
····if capitalize:
········name = name.upper()
····for rep in range(repetitions):
········print('Hello {}'.format(name))
Помимо этого, декоратор plac.Interpreter предоставляет легковесный способ создать очень быстрое интерактивное приложение для командной строки. Примеры содержатся в документации к интерактивному режиму plac по адресу https://github.com/kennethreitz-archive/plac/blob/master/doc/plac_adv.txt.
Click
Основное предназначение Click (http://click.pocoo.org/) (расшифровывается как Command Line-Interface Creation Kit — набор для создания интерфейсов командной строки) — помочь разработчикам создать компонуемые интерфейсы командной строки, написав минимально возможное количество кода. Документация к Click подтверждает ее связь с docopt.
Функция Click — создавать компонуемые системы, функция docopt — вручную создавать самые красивые интерфейсы командной строки. Эти две цели конфликтуют друг с другом. Click мешает пользователям реализовывать некоторые шаблоны для того, чтобы сделать интерфейсы командной строки уникальными. Например, вы практически не можете переформатировать вспомогательные страницы.
Стандарты этой библиотеки способны удовлетворить почти все запросы разработчиков, но продвинутые пользователи могут изменить их. Как и в случае с Plac, она задействует декораторы, чтобы привязать определения анализатора к функциям, которые будут их использовать, переместив из самих функций управление аргументами командной строки.
Приложение hello.py при использовании Click выглядит так:
import click
@click.command()
@click.argument('name', type=str)
@click.option('-capitalize', is_flag=True)
@click.option('-repetitions', default=1,
··············help="Times to repeat the greeting.")
def hello(name, capitalize, repetitions):
····"""Здоровается, with capitalization и именем."""
····if capitalize:
········name = name.upper()
····for rep in range(repetitions):
········print('Hello {}'.format(name))
if __name__ == '__main__':
····hello()
Click анализирует описание из строк документации команды и создает вспомогательное сообщение с помощью пользовательского анализатора, унаследованного от устаревшего члена стандартной библиотеки optparse, который более совместим со стандартами POSIX, чем argparse[82].