Почему параметр анализируется как bool?

Я обычно использую docopt для обработки параметров командной строки, но теперь у меня есть случай, когда параметры анализируются неожиданно (это должно быть моей глупой ошибкой, поскольку она всегда прекрасно работает)

"""
API to do something

Usage:
    api.py [options]

Options:
    --port PORT     port to listen on   [default: 64645]
    --url   URL     elasticsearch address   [default: http://elk.example.com:9200]
"""

Это анализируется через conf = docopt.docopt(__doc__) позвони после чего у меня conf установлен в

{
    '--port': '64645',
    '--url': False
}

--url часть не верна, но я не могу понять почему.

2 ответа

Решение

Это потому, что между ними слишком много пробелов --url а также URL, пытаться:

"""
API to do something

Usage:
    api.py [options]

Options:
    --port PORT     port to listen on   [default: 64645]
    --url URL       elasticsearch address   [default: http://elk.example.com:9200]
"""

Взято из официальной документации:

Чтобы указать, что опция имеет аргумент, поместите слово, описывающее этот аргумент, после одного пробела или знака "=".

Используйте два пробела для разделения опций с их неформальным описанием.

Другие вопросы по тегам