Merge pull request #8 from cswegger/tablib

---

This pull request is to fix pickling / unpickling of Row within Dataset. __getstate__ resembled a dictionary comprehension (Python 2.7+) but it wasnt, and it caused wrong values to be pickled, leading to unusable objects after restoring.

This patch fixes the issues. All unit tests still pass.
This commit is contained in:
Kenneth Reitz
2011-05-12 10:13:42 -04:00
parent 0ebc8f5e1b
commit 2cd381389c
2 changed files with 15 additions and 2 deletions
+6
View File
@@ -1,6 +1,12 @@
History
-------
0.9.7
+++++
* Pickling Bugfix
0.9.6 (2011-05-12)
++++++++++++++++++
+9 -2
View File
@@ -35,7 +35,7 @@ __docformat__ = u'restructuredtext'
class Row(object):
u"""Internal Row object. Mainly used for filtering."""
__slots__ = [u'tuple', u'_row', u'tags']
__slots__ = [ u'_row', u'tags']
def __init__(self, row=list(), tags=list()):
self._row = list(row)
@@ -63,7 +63,14 @@ class Row(object):
del self._row[i]
def __getstate__(self):
return {slot: [getattr(self, slot) for slot in self.__slots__]}
slots = dict()
for slot in self.__slots__:
attribute = getattr(self, slot)
slots[slot] = attribute
return slots
def __setstate__(self, state):
for (k, v) in list(state.items()): setattr(self, k, v)