Подкласс Python str с ленивой оценкой его значения (для argparse)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Подкласс Python str с ленивой оценкой его значения (для argparse)

Сообщение Anonymous »

Я создаю программу командной строки, использующую argparse.
В (предполагаемом) редком случае неправильного вызова argparse покажет предоставленную строку описания при создании ArgumentParser.
Я хочу, чтобы в этом описании отображался номер версии моей программы.
Я хочу извлечь его из pyproject.toml файл через tomllib.
Поскольку это дорогостоящая операция (и тем более, поскольку я хочу научиться ее делать), Я бы хотел, чтобы строка описания оценивалась лениво: только когда его действительно нужно напечатать.
Я еще не нашел способа сделать это, хотя я готов создать простой объект, специализированный для этого. особая ценность:
  • Код: Выделить всё

    collections.UserString
    может обеспечить отложенную оценку (путем переопределения __getattribute__ для атрибута data), но, увы, некоторый код в argparse использует re.sub() для it, который, по-видимому, проверяет isinstance(x, str), что UserString не выполняет.
  • подкласс str может переопределить любой операция, выполняемая над строкой, но не выполняющая ленивую оценку для простого использования всей строки. (Правда ли это?)
  • если ArgumentParser будет использовать str(description) вместо описания, когда он собирается напечатать описание, один может предоставить объект, выполняющий отложенную оценку, в своем методе __str__. Но, увы, ArgumentParser этого не делает.
Есть ли какой-нибудь подход, который справится с этой задачей?

Подробнее здесь: https://stackoverflow.com/questions/788 ... r-argparse
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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