Settings#

b2luigi.get_setting(key, default=None, task=None, deprecated_keys=None)#

b2luigi adds a settings management to luigi and also uses it at various places. Many batch systems, the output and log path, the environment etc. is controlled via these settings.

There are four ways settings could be defined. They are used in the following order (an earlier setting overrides a later one):

  1. If the currently processed (or scheduled) task has a property of the given name, it is used. Please note that you can either set the property directly, e.g.

    class MyTask(b2luigi.Task):
        batch_system = "htcondor"
    

    or by using a function (which might even depend on the parameters)

    class MyTask(b2luigi.Task):
        @property
        def batch_system(self):
            return "htcondor"
    

    The latter is especially useful for batch system specific settings such as requested wall time etc.

  2. Settings set directly by the user in your script with a call to b2luigi.set_setting().

  3. Settings specified in the settings.json in the folder of your script or any folder above that. This makes it possible to have general project settings (e.g. the output path or the batch system) and a specific settings.json for your sub-project.

With this function, you can get the current value of a specific setting with the given key. If there is no setting defined with this name, either the default is returned or, if you did not supply any default, a value error is raised.

Settings can be of any type, but are mostly strings.

Parameters
  • key (str) – The name of the parameter to query.

  • task – (b2luigi.Task): If given, check if the task has a parameter with this name.

  • default (optional) – If there is no setting which the name, either return this default or if it is not set, raise a ValueError.

  • deprecated_keys (List) – Former names of this setting, will throw a warning when still used

b2luigi.set_setting(key, value)#

Set the setting with the specified name - overriding any setting.json. If you want to have task specific settings, create a parameter with the given name or your task.

b2luigi.clear_setting(key)#

Clear the setting with the given key