считывание логической опции по умолчанию из переменной среды с помощью щелчка

#python

#python

Вопрос:

В Click можно использовать логические флаги, подобные этому:

 import sys

@click.command()
@click.option('--shout/--no-shout', default=False)
def info(shout):
    rv = sys.platform
    if shout:
        rv = rv.upper()   '!!!!111'
    click.echo(rv)
 

Однако, как связать уровень shout с существованием переменных среды SHOUT или NO_SHOUT как значение по умолчанию?

Ответ №1:

Как описано в документации, вы можете передать envvar параметр.

 @click.option('--shout/--no-shout', default=False, envvar='SHOUT')
 

Однако при этом будет проверяться SHOUT поиск значения true / false. Я не знаю чистого способа проверить наличие двух разных переменных среды, как вы просили. (Что бы произошло, если бы они оба были установлены?)

Ответ №2:

Используйте os.environ и проверьте, содержит ли он SHOUT :

 import sys
import os

@click.command()
@click.option('--shout/--no-shout', default=False)
def info(shout):
    if not shout and "SHOUT" in os.environ:
        shout = os.environ["shout"]
    rv = sys.platform
    if shout:
        rv = rv.upper()   '!!!!111'
    click.echo(rv)
 

(Не тестировался, поскольку я не click пользователь, но должен дать вам начальную идею)

Комментарии:

1. click работает с использованием декораторов и их аргументов; это может быть решением, но это не так, как click задумано. В любом случае спасибо.