
import bz2

class BZ2Reader:
    def __init__(self, fh):
        self.fh = fh
        self.dc = bz2.BZ2Decompressor()
        self.buf = ''

    def readline(self):
        while '\n' not in self.buf:
            data = self.fh.read(1024)

            if not data:
                break

            self.buf += self.dc.decompress(data)

        line, self.buf = self.buf.split('\n', 1)
        return line

bz2r = BZ2Reader(file('Sources.bz2'))
print `bz2r.readline()`

