change ObjectId __getstate__ and __setstate__ to just use __id also added unit test for pickling/unpickling ObjectId

This commit is contained in:
Richard Shea 2011-04-02 13:57:45 -04:00 committed by Bernie Hackett
parent c9c54575ff
commit f202c535d5
2 changed files with 8 additions and 3 deletions

View File

@ -191,12 +191,12 @@ class ObjectId(object):
"""return value of object for pickling.
needed explicitly because __slots__() defined.
"""
return self.__str__()
return self.__id
def __setstate__(self, oid):
def __setstate__(self, value):
"""explicit state set from pickling
"""
self.__validate(oid)
self.__id = value
def __str__(self):
return self.__id.encode("hex")

View File

@ -15,6 +15,7 @@
"""Tests for the objectid module."""
import datetime
import pickle
import warnings
import unittest
import sys
@ -124,5 +125,9 @@ class TestObjectId(unittest.TestCase):
oid = ObjectId.from_datetime(aware)
self.assertEqual(as_utc, oid.generation_time)
def test_pickling(self):
orig = ObjectId()
self.assertEqual(orig, pickle.loads(pickle.dumps(orig)))
if __name__ == "__main__":
unittest.main()