1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, division
from tempfile import NamedTemporaryFile
from petl.compat import pickle
from petl.test.helpers import ieq
from petl.io.pickle import frompickle, topickle, appendpickle
def picklereader(fl):
try:
while True:
yield pickle.load(fl)
except EOFError:
pass
def test_frompickle():
f = NamedTemporaryFile(delete=False)
table = (('foo', 'bar'),
('a', 1),
('b', 2),
('c', 2))
for row in table:
pickle.dump(row, f)
f.close()
actual = frompickle(f.name)
ieq(table, actual)
ieq(table, actual) # verify can iterate twice
def test_topickle_appendpickle():
# exercise function
table = (('foo', 'bar'),
('a', 1),
('b', 2),
('c', 2))
f = NamedTemporaryFile(delete=False)
topickle(table, f.name)
# check what it did
with open(f.name, 'rb') as o:
actual = picklereader(o)
ieq(table, actual)
# check appending
table2 = (('foo', 'bar'),
('d', 7),
('e', 9),
('f', 1))
appendpickle(table2, f.name)
# check what it did
with open(f.name, 'rb') as o:
actual = picklereader(o)
expect = (('foo', 'bar'),
('a', 1),
('b', 2),
('c', 2),
('d', 7),
('e', 9),
('f', 1))
ieq(expect, actual)
def test_topickle_headerless():
table = []
f = NamedTemporaryFile(delete=False)
topickle(table, f.name)
expect = []
with open(f.name, 'rb') as o:
ieq(expect, picklereader(o))
|