Docopt: параметры после повторяющихся элементов интерпретируются как повторяющиеся элементы
я используюdocopt в моей простой программе на Python:
#!/usr/bin/env python
"""
Farmers market
Usage:
farmersmarket.py buy -i <item> -q <quantity> [<quantity>] [-p <price>] [-dvh]
farmersmarket.py -d | --debug
farmersmarket.py -v | --version
farmersmarket.py -h | --help
Options:
-i --item Item.
-q --quantity Quantity.
-p --price Price.
-d --debug Show debug messages.
-h --help Show this screen.
-v --version Show version.
"""
from docopt import docopt
print docopt(__doc__)
Если я бегу:
farmersmarket.py buy --item eggs --quantity 100 115 --price 0.25
Ожидаемое поведение - покупать случайное количество яиц между значениями 100 и 115 по цене 0,25. Это работает без проблем, по крайней мере, когда дело доходит до интерпретации аргументов. Другими словамиdocopt получает все как положено:
{'--debug': False,
'--help': False,
'--item': True,
'--price': True,
'--quantity': True,
'--version': False,
'<item>': 'eggs',
'<price>': '0.25',
'<quantity>': ['100', '115'],
'buy': True}
Однако иногда я не хочу покупать случайное количество яиц, а конкретное количество. В этом случае--quantity
опция принимает только один аргумент:
farmersmarket.py buy --item eggs --quantity 471 --price 0.25
Но это не так, какdocopt толкует--price 0.25
как повторяющийся элемент--quantity
и теряет ценность<price>
:
{'--debug': False,
'--help': False,
'--item': True,
'--price': True,
'--quantity': True,
'--version': False,
'<item>': 'eggs',
'<price>': None,
'<quantity>': ['471', '0.25'],
'buy': True}
Как я могу заставить другие варианты работать после повторения элементов?