docs: def progress(self, *restrictions, display=True):
          """
          report progress of populating the table
          :return: remaining, total -- tuples to be populated
          """
          todo = self._jobs_to_do(restrictions)
          total = len(todo)
          remaining = len(todo - self.target)
          if display:
              print('%-20s' % self.__class__.__name__,
                    'Completed %d of %d (%2.1f%%)   %s' % (
                        total - remaining, total, 100 - 100 * remaining / (total+1e-12),
                        datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')), flush=True)
          return remaining, total