Skip to content

Commit c9c5457

Browse files
shearicbehackett
authored andcommitted
fix pickling of ObjectId by defining __getstate__() and __setstate__() because __slots__() is defined
1 parent 043bb9a commit c9c5457

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

bson/objectid.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,17 @@ def generation_time(self):
187187
t = struct.unpack(">i", self.__id[0:4])[0]
188188
return datetime.datetime.fromtimestamp(t, utc)
189189

190+
def __getstate__(self):
191+
"""return value of object for pickling.
192+
needed explicitly because __slots__() defined.
193+
"""
194+
return self.__str__()
195+
196+
def __setstate__(self, oid):
197+
"""explicit state set from pickling
198+
"""
199+
self.__validate(oid)
200+
190201
def __str__(self):
191202
return self.__id.encode("hex")
192203

0 commit comments

Comments
 (0)