Почему Python `argparse` перестал документировать nargs=REMAINDER?Python

Программы на Python
Ответить
Anonymous
 Почему Python `argparse` перестал документировать nargs=REMAINDER?

Сообщение Anonymous »

В документации модуля Python argparse в документации версии 3.8 указано, что для nargs может быть установлено значение:

Код: Выделить всё

argparse.REMAINDER. Все остальные аргументы командной строки собираются в список. Это обычно полезно для утилит командной строки, которые отправляют сообщения другим утилитам командной строки.

Это было удалено из документации 3.9, хотя нет никаких упоминаний о том, что она устарела, и нет никаких веских причин для этого, что я вижу, учитывая, что она обеспечивает полезную функциональность, явно не предоставляемую другими средствами.¹ Его существование все еще упоминается вскользь в другом месте страницы:

Эти [смешанные] парсеры не поддерживают все функции argparse и вызывают исключения, если используются неподдерживаемые функции. В частности, не поддерживаются поданализаторы, argparse.REMAINDER и взаимоисключающие группы, включающие как опциональные, так и позиционные параметры.

Но даже это удалено в документации 3.11. Тем не менее, эта функция сохраняется даже в Python 3.11.4, последней выпущенной версии.
Так почему же она была удалена из документации?

Я спрашиваю об этом, потому что ответ, похоже, напрямую связан с несколькими другими связанными с мной вопросами о программировании анализаторов аргументов в Python. (Конкретные ситуации, в которых я использовал, использую и могу продолжать использовать nargs=REMAINDER
, достаточно обширны, и я считаю, что при необходимости их следует публиковать в виде отдельных вопросов.) Соображения включают в себя:
  • Не работает ли API каким-либо образом для моих целей, и означает ли это, что мой код, который его использует, также сломан?
  • Следует ли мне искать замену этому API?
  • Следует ли мне продолжать использовать этот API в новом коде? В конце концов, он не устарел.
  • Должен ли я конвертировать существующий код, использующий этот API, для использования чего-то другого?
(Обратите также внимание, что ответы на подобные вопросы будут не только зависеть от конкретного контекста, в котором используется nargs=REMAINDER, но также могут рассматриваться как вопросы мнения, что является еще одной причиной оставить их за пределами этого вопроса.)

¹ nargs=REMAINDER отличается от nargs='*': использование REMAINDER означает, что с этого момента argparse не будет пытаться анализировать параметры (начинающиеся с -). Таким образом, при использовании REMAINDER mycmd -q run bash -c exit не будет пытаться анализировать -c как опцию mycmd, а вместо этого строка будет обрабатываться как mycmd -q run -- bash -c exit с '*'.

Подробнее здесь: https://stackoverflow.com/questions/769 ... -remainder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»