Getting Started with the b2luigi CLI#
This tutorial walks you through the new b2luigi command-line interface
from first task to multi-parameter runs. By the end you will have used
b2luigi run, b2luigi show, b2luigi remove, and
ParameterGenerator.
Prerequisites: b2luigi installed (pip install b2luigi).
Verify with:
b2luigi --version
Step 1 — Create your first task#
Create a file called tasks.py in a new directory:
import b2luigi
class MyTask(b2luigi.Task):
my_parameter = b2luigi.Parameter()
def output(self):
return self.add_to_output("output.txt")
def run(self):
with open(self.get_output_file_name("output.txt"), "w") as f:
f.write(f"my_parameter = {self.my_parameter}\n")
Step 2 — Run it#
b2luigi run MyTask --my-parameter 3
b2luigi creates the output file under a results/ directory, in a
subfolder named after the parameter value (my_parameter=3/).
Step 3 — Inspect outputs#
b2luigi show # full dependency tree
b2luigi show MyTask # just MyTask's outputs
The output panel uses colour coding: green means the file exists, red means it is missing.
Step 4 — Remove and re-run#
b2luigi remove MyTask -y # -y skips the confirmation prompt
b2luigi run MyTask --my-parameter 3
Step 5 — Multiple parameter values with parameters.py#
Create a parameters.py alongside tasks.py:
from b2luigi import ParameterGenerator
config = {
"my_parameter": ParameterGenerator([1, 2, 3]),
}
Now run without any explicit parameter flags — b2luigi reads the values
from parameters.py:
b2luigi run MyTask
b2luigi reads parameters.py automatically and schedules three task
instances — one per value in the generator.
b2luigi show # shows all three instances and their output status
Step 6 — Working with task requirements#
Add a parent task that depends on MyTask:
class ParentTask(b2luigi.Task):
my_parameter = b2luigi.Parameter()
def requires(self):
return MyTask(my_parameter=self.my_parameter)
def output(self):
return self.add_to_output("summary.txt")
def run(self):
with open(self.get_output_file_name("summary.txt"), "w") as f:
f.write("done\n")
Use --with-requirements to traverse the full requirement chain:
b2luigi show ParentTask --with-requirements
b2luigi remove MyTask --with-requirements -y
--with-requirements walks downward through requires() — for the
named task, it shows or removes that task and everything it transitively
requires. When removing MyTask, ParentTask (which requires it)
is left untouched.
Step 7 — Shell auto-completion#
Install tab-completion for your shell:
b2luigi --install-completion
After sourcing your shell rc file, b2luigi <Tab> completes subcommand
names and b2luigi show --<Tab> completes flag names.
What’s next?#
The b2luigi CLI — full feature reference for all subcommands and options
CLI Reference — auto-generated command reference with all flags
Quick Start — end-to-end quickstart including batch submission