code: def GetRowMatch(self, attributes):
          
          for row in self.compiled:
              try:
                  for key in attributes:
                      # Silently skip attributes not present in the index file.
                      # pylint: disable=E1103
                      if (
                          key in row.header
                          and row[key]
                          and not row[key].match(attributes[key])
                      ):
                          # This line does not match, so break and try next row.
                          raise StopIteration()
                  return row.row
              except StopIteration:
                  pass
          return 0
docs: Returns the row number that matches the supplied attributes.