# python 3.0 transition
range = xrange

import cPickle
import csv
import json
import pickle


N = 50*1000
csv_file = 'data.csv'
pickle_file = 'data.dat'
json_file = 'data.json'


def gen_data(n):
    data = []
    for seq in range(1000,n+1000):
        seq26 = seq % 26 + 1
        seq29 = seq % 29 + 1
        seq53 = seq % 53 + 1
        seq987 = seq % 987 + 1
        name = 'John %s. Doe' % chr(seq26+64)
        address = '21%s Main St.' % seq53
        city = 'Middle Town %s' % seq987
        age = seq53
        birthday = '1985-05-%s' % seq29
        data.append(
            (seq, name, address, city, age, birthday)
        )
    return data



def write_csv():
    data = gen_data(N)
    with open(csv_file,'wb') as fp:
        fp.write('seq, name, address, city, age, birthday\n')
        for row in data:
            line = ','.join(map(str,row))
            fp.write(line)
            fp.write('\n')



def write_pickle():
    data = gen_data(N)
    with open(pickle_file,'wb') as fp:
        cPickle.dump(data,fp)



def write_json():
    data = gen_data(N)
    with open(json_file,'wb') as fp:
        json.dump(data,fp)



def read_csv():
    with open(csv_file,'rb') as fp:
        reader = csv.reader(fp)
        reader.next()
        data = list(reader)
    return data



def read_csv_int():
    with open(csv_file,'rb') as fp:
        reader = csv.reader(fp)
        reader.next()
        data = []
        for row in reader:
            row[0] = int(row[0])
            row[4] = int(row[4])
            data.append(tuple(row))
    return data



def read_pickle():
    with open(pickle_file,'rb') as fp:
        data = pickle.load(fp)
    return data



def read_cpickle():
    with open(pickle_file,'rb') as fp:
        data = cPickle.load(fp)
    return data



def read_json():
    with open(json_file,'rb') as fp:
        data = json.load(fp)
    return data


if __name__ =='__main__':
    pass
