def test_reader(self): csv_filegen = tempinput("""name,age,gender,score Akari,9,f, Kyoko,10,f,0.06 Yui,10,f,0.08 Chinatsu,9,f,0.04 """) type_filegen = tempinput("""[typename] name = string age = int gender = string score = float [setting] optional = score """) with csv_filegen as csv_filename, type_filegen as type_filename: with open(csv_filename, 'r') as csv_fh: typeinfo, reader = typedreader.reader(csv_fh, type_filename) for row in reader: assert type(row['name']) is str assert type(row['age']) is int assert type(row['gender']) is str assert type(row['score']) is float or row['score'] is None assert typeinfo.required('name') is True assert typeinfo.required('age') is True assert typeinfo.required('score') is False
def test_reader_typeinfo_invalid_fieldname(self): csv_filegen = tempinput("""name,age,gender,score Akari,9,f, Kyoko,10,f,0.06 Yui,10,f,0.08 Chinatsu,9,f,0.04 """) type_filegen = tempinput("""[typename] name = string age = int gender = string score = float [setting] optional = score """) with csv_filegen as csv_filename, type_filegen as type_filename: with open(csv_filename, 'r') as csv_fh: typeinfo, reader = typedreader.reader(csv_fh, type_filename) assert typeinfo.required('\(^o^)/') is None
#!/usr/bin/env python # -*- coding: utf-8 -*- import argparse import typedreader def parse_args(): parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('-c', '--csvfile', help='') parser.add_argument('-t', '--typefile', help='') return parser.parse_args() if __name__ == '__main__': args = parse_args() with open(args.csvfile, 'r') as csvfh: typeinfo, reader = typedreader.reader(csvfh, args.typefile) for row in reader: print(row)