Создание параметров luigi из других параметров при инициализации - PullRequest
0 голосов
/ 18 мая 2018

У меня следующий вопрос - могу ли я использовать значение одного параметра для определения другого параметра?Вот иллюстрация того, что я пытаюсь сделать.Предположим, у меня есть файл конфигурации, который выглядит следующим образом:

[MyTaskRunner]
logdir=/tmp/logs
numruns=2

, и я определил MyTaskRunner следующим образом:

class MyTaskRunner(luigi.Task):
      logdir=luigi.Parameter(default=None)
      rundate=luigi.Parameter(default=today)

где logdir - это параметр, полученный из файла конфигурации, и rundateявляется параметром, который был передан во время выполнения.

Теперь предположим, что я хочу определить новую переменную logpath_str, например,

       logpath_str="{}/{}".format(logdir, rundate)

Можно ли определить это как параметр?

Было бы решение указать значение по умолчанию, как в:

       logpath=luigi.Parameter(default=logpath_str)

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 23 июня 2018

Значения параметров не разрешаются до тех пор, пока класс не будет инициализирован (во время __init__), поэтому простой способ добиться нужного поведения - реализовать __init__ yourslef и инициализировать logpath со значением по умолчанию послезвоню супер.

class MyTaskRunner(luigi.Task):
    logdir=luigi.Parameter(default=None)
    logpath=luigi.Parameter(default=None)
    rundate=luigi.Parameter(default=today)

    def __init__(self, *args, **kwargs):
        super(MyTaskRunner, self).__init__(*args, **kwargs)

        if self.logpath is None:
            self.logpath = "{}/{}".format(self.logdir, self.rundate)
...