docstr: Produces a generator that allow us to iterate over
  the job tasks as a list of rows.
  Row headers are defined at Report.ROW_HEADERS.
code: def rows(self):
      """
      Produces a generator that allow us to iterate over
      the job tasks as a list of rows.
      Row headers are defined at Report.ROW_HEADERS.
      """
      for task_name, task in sorted(self.job.tasks.items()):
          task_status = task.status()
          row = [
              task_name,
              task_status.combined_state,
              task_status.build_links,
              self.branch_url(task.branch),
              task.ci,
              # We want this to be serialized as a dict instead
              # of an orderedict.
              {k: v for k, v in task.params.items()},
              task.template,
              # Arrow repository commit
              self.job.target.head,
          ]
          yield row
  
imports: import collections
  import csv
  import operator
  import fnmatch
  import functools
  import time
  import click
  import requests
  from archery.utils.report import JinjaReport
label_desc: Use image node_id 10 for calling the Report obj's underlying member method code with example usage: obj.rows() without return types