Луиджи: Есть ли способ передать «false» параметру bool из командной строки? - PullRequest
2 голосов
/ 21 января 2020

У меня есть задача Luigi с логическим параметром, который по умолчанию имеет значение True :

class MyLuigiTask(luigi.Task):
    my_bool_param = luigi.BoolParameter(default=True) 

Когда я запускаю эту задачу из терминала, мне иногда хочется пройти этот параметр как False , но получим следующий результат:

$ MyLuigiTask --my_bool_param False
error: unrecognized arguments: False  

То же самое очевидно для false и 0 ...

Я понимаю, что могу установите значение по умолчанию False и затем используйте флаг --my_bool_param, если я хочу сделать это True , но я предпочитаю иметь значение по умолчанию True .

Есть ли способ сделать это, и все же передать False из терминала?

1 Ответ

2 голосов
/ 21 января 2020

Нашел решение в Luigi docs :

class MyLuigiTask(luigi.Task):
    my_bool_param = luigi.BoolParameter(
        default=True, 
        parsing=luigi.BoolParameter.EXPLICIT_PARSING)

    def run(self):
        print(self.my_bool_param)

Здесь EXPLICIT_PARSING сообщает Луиджи, что добавление флага --my_bool_param false в вызове терминала к MyLuigiTask будет проанализировано как store_false.

Теперь мы можем иметь:

$ MyLuigiTask --my_bool_param false
False
...