Mercurial > hg > numerics
view numerics/convert.py @ 58:537fba7c9def
stubbing
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Tue, 20 Jan 2015 16:44:56 -0800 |
parents | 06e487f90e05 |
children | 3781174542bb |
line wrap: on
line source
#!/usr/bin/env python """ convert between types """ # imports import argparse import csv import sys from .data import transpose from .read import read_csv, CSVParser __all__ = ['cast', 'float_or_orig', 'main'] default_cast = (int, float, str) def cast(to_type, *values): retval = [] for value in values: try: retval.append(to_type(value)) except ValueError: retval.append(value) return retval def float_or_orig(*values): return cast([float], *values) def column_type(values, types=default_cast): """determine the type of a column""" for t in types: for value in values: try: t(value) except ValueError, TypeError: break else: return t raise NotImplementedError('TODO') # -> record TODO items def cast_columns(values, to=default_cast): """ cast a column of data """ raise NotImplementedError('TODO') # -> record TODO items def main(args=sys.argv[1:]): """CLI""" # parse command line parser = CSVParser(description="interpolate types from file") options = parser.parse_args(args) # read CSV file data = parser.read() # transpose columns = transpose(data) # get types types = [column_type(column) for column in columns] # print type information writer = csv.writer(sys.stdout) writer.writerow([t.__name__ for t in types]) if __name__ == '__main__': main()