Returns the row number that matches the supplied attributes.

def GetRowMatch(self, attributes):
        """Returns the row number that matches the supplied 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