def gene_iterator(gff_iterator, strict=True):
    last = Entry()
    matches = []
    found = set()
    for gffs in transcript_iterator(gff_iterator, strict):

        if last.gene_id != gffs[0].gene_id or last.contig != gffs[0].contig:
            if matches:
                yield matches
            matches = []
            last = gffs[0]
            assert not strict or last.gene_id not in found, \
                "duplicate entry %s" % last
            found.add(last.gene_id)

        matches.append(gffs)

    if matches:
        yield matches
Return the numba type of a Python value that is being used
dataset/ETHPy150Open CGATOxford/cgat/CGAT/GTF.py/gene_iterator--crossover with--dataset/ETHPy150Open numba/numba/numba/typing/context.py/BaseContext.resolve_value_type