Setting Task Parameters
There are several ways to set task parameters.
Set parameter from command line
Set parameter at config file
Set parameter at upstream task
Inherit parameter from other task
Set parameter from command line
python main.py sample.SomeTask --SomeTask-param=Hello
Parameter of each task can be set as a command line parameter in --[task name]-[parameter name]=[value]
format.
Set parameter at config file
[sample.SomeTask]
param = Hello
Above config file (config.ini
) must be read before gokart.run()
as the following code:
if __name__ == '__main__':
gokart.add_config('./conf/config.ini')
gokart.run()
It can also be loaded from environment variable as the following code:
[sample.SomeTask]
param=${PARAMS}
[TaskOnKart]
workspace_directory=${WORKSPACE_DIRECTORY}
The advantages of using environment variables are 1) important information will not be logged 2) common settings can be used.
Set parameter at upstream task
Parameters can be set at the upstream task, as in a typical pipeline.
class UpstreamTask(gokart.TaskOnKart):
def requires(self):
return dict(sometask=SomeTask(param='Hello'))
Inherit parameter from other task
Parameter values can be inherited from other task using @inherits_config_params
decorator.
class MasterConfig(luigi.Config):
param: str = luigi.Parameter()
param2: str = luigi.Parameter()
@inherits_config_params(MasterConfig)
class SomeTask(gokart.TaskOnKart):
param: str = luigi.Parameter()
This is useful when multiple tasks has the same parameter. In the above example, parameter settings of MasterConfig
will be inherited to all tasks decorated with @inherits_config_params(MasterConfig)
as SomeTask
.
Note that only parameters which exist in both MasterConfig
and SomeTask
will be inherited.
In the above example, param2
will not be available in SomeTask
, since SomeTask
does not have param2
parameter.
class MasterConfig(luigi.Config):
param: str = luigi.Parameter()
param2: str = luigi.Parameter()
@inherits_config_params(MasterConfig, parameter_alias={'param2': 'param3'})
class SomeTask(gokart.TaskOnKart):
param3: str = luigi.Parameter()
You may also set a parameter name alias by setting parameter_alias
.
parameter_alias
must be a dictionary of key: inheriting task’s parameter name, value: decorating task’s parameter name.
In the above example, SomeTask.param3
will be set to same value as MasterConfig.param2
.