def check_reader(fname): if not "http:" in fname: for d in reader(fname): assert all((k in d for k in "abc")) assert d['a'] else: for d in reader(fname): assert all((k in d for k in "SXEM"))
def test_split_regex(): fh = open('tt.tmp', 'w') fh.write("asdf123abc\n") fh.close() toks = next(reader('tt.tmp', header=None, sep="\d+")) assert toks == ['asdf', 'abc'], toks os.unlink('tt.tmp')
def test_split_None(): with open('tt.tmp', 'w') as fh: fh.write("asdf 123\tabc\n") fh.flush() toks = next(reader('tt.tmp', header=None, sep=None)) assert toks == ['asdf', '123', 'abc'], toks os.unlink('tt.tmp')
def check_ordered_reader(fname): if not "http:" in fname: for d in reader(fname, header="ordered"): assert all((k in d for k in "abc")) d["0"] = "extra" d["_"] = "other" assert list(d.keys()) == ["a", "b", "c", "0", "_"]
def test_skip_until(): with open('tta.tmp', 'w') as fh: fh.write("""#a\n#b\n#c\na\tb\n""") fiter = reader('tta.tmp', header=False, sep="\t", skip_while=lambda toks: toks[0].startswith("#")) f = list(fiter) assert len(f) == 1, f assert f[0] == ["a", "b"], f
def test_callable_header(): class Bed(object): def __init__(self, toks): self.chrom = toks[0] self.start = int(toks[1]) self.end = int(toks[2]) fh = nopen(op.join(DATA, "file_data.txt")) fh.readline() # drop header. for bed in reader(fh, header=Bed): assert bed.chrom assert isinstance(bed.start, int)
def test_namedtuple_header(): from collections import namedtuple for d in reader(op.join(DATA, "file_data.txt"), header=namedtuple): assert hasattr(d, "a"), d assert hasattr(d, "b") assert hasattr(d, "c")
def check_reader_no_header(fname): for l in reader(fname, header=False): assert isinstance(l, list), (l, type(l), fname)
def test_reader_generator(): """check that reader can accept a generator""" r = reader(op.join(DATA, "file_data.txt"), header=False) header = next(r) for d in reader(r, header=header): assert all(l in d for l in "abc")