def GetNonExpiredApprovers(self):

    lifetime = rdfvalue.Duration(self.Get(self.Schema.LIFETIME) or
                                 config_lib.CONFIG["ACL.token_expiry"])

    # Check that there are enough approvers.
    #
    # TODO(user): approvals have to be opened with
    # age=aff4.ALL_TIMES because versioning is used to store lists
    # of approvers. This doesn't seem right and has to be fixed.
    approvers = set()
    now = rdfvalue.RDFDatetime().Now()
    for approver in self.GetValuesForAttribute(self.Schema.APPROVER):
      if approver.age + lifetime > now:
        approvers.add(utils.SmartStr(approver))

    return list(approvers)
tables should be a list of pairs, the first element in the
dataset/ETHPy150Open google/grr/grr/lib/aff4_objects/security.py/ApprovalWithApproversAndReason.GetNonExpiredApprovers--crossover with--dataset/ETHPy150Open kobotoolbox/kobocat/onadata/apps/viewer/xls_writer.py/XlsWriter.write_tables_to_workbook