Ответ 1
В соответствии с предложением в другом вопросе я клонировал репозиторий docopt и установил текущий наконечник с нулевым эффектом. Теперь, когда у меня был исходный код, хотя я решил сделать некоторую отладку и посмотреть, могу ли я найти проблему.
В строке 200 метода parse в классе Option используется регулярное выражение, используемое для получения значений по умолчанию:
matched = re.findall('\[default: (.*)\]', description, flags=re.I)
После печати куча окружающих переменных я обнаружил, что значение description
vars было пустой строкой. Вот строка, которая устанавливает описание:
options, _, description = option_description.strip().partition(' ')
Часть, которая попалась мне на глаза, была таковой: .partition(' ')
, это два пробела. Поэтому после обновления моего кода я вернусь к документам и поискать "пробелы": https://github.com/docopt/docopt#option-descriptions-format Шестая пуля:
"Используйте два пробела для разделения опций с их неофициальным описанием"
TL; DR RTFM (или, по крайней мере, код).
Бонусный совет: docopt понимает многострочные описания, поэтому вы можете просто обернуть все, что пересекает 80-значную строку:
Options:
--help Show this message and exit
--version Show version info and exit
-w WIDTH --width=WIDTH The out to out width of the deck (feet)
[default: 73]
-g GIRDERS --girders=GIRDERS The number of girders [default: 8]
-h HEIGHT --height=HEIGHT The height of the girders (inches)
[default: 56]
-t THICK --thick=THICK The deck thickness (inches) [default: 8]
-a ADIM --adim=ADIM The "A" dimension, max. deck thickness at
centerline of girder (inches) [default: 12]
-l LSLP --leftslope=LSLP The left-hand deck slope (ft/ft)
[default: -0.02]
-r RSLP --rightslope=RSLP The right-hand deck slope (ft/ft)
[default: -0.02]
-c --center Indicates pivot point is at center of bridge
-o OFFSET --offset=OFFSET The offset of pivot point from center
[default: 0]
Не совсем читаемо, но правильно разбирается.