@classmethod
    def _iter_packed_refs(cls, repo):
        """Returns an iterator yielding pairs of sha1/path pairs (as bytes) for the corresponding refs.
        :note: The packed refs file will be kept open as long as we iterate"""
        try:
            with open(cls._get_packed_refs_path(repo), 'rt') as fp:
                for line in fp:
                    line = line.strip()
                    if not line:
                        continue
                    if line.startswith('#'):
                        if line.startswith('# pack-refs with:') and not line.endswith('peeled'):
                            raise TypeError("PackingType of packed-Refs not understood: %r" % line)
                        # END abort if we do not understand the packing scheme
                        continue
                    # END parse comment

                    # skip dereferenced tag object entries - previous line was actual
                    # tag reference for it
                    if line[0] == '^':
                        continue

                    yield tuple(line.split(' ', 1))
                # END for each line
        except (OSError, IOError):
            return
        # END no packed-refs file handling
        # NOTE: Had try-finally block around here to close the fp,
        # but some python version woudn't allow yields within that.
        # I believe files are closing themselves on destruction, so it is
        # alright.
dataset/ETHPy150Open gitpython-developers/GitPython/git/refs/symbolic.py/SymbolicReference._iter_packed_refs/original