Fix deepcopy on EmbeddedDocument
This commit is contained in:
parent
3b10236b5e
commit
88642eb021
1
AUTHORS
1
AUTHORS
@ -260,3 +260,4 @@ that much better:
|
|||||||
* Stankiewicz Mateusz (https://github.com/mas15)
|
* Stankiewicz Mateusz (https://github.com/mas15)
|
||||||
* Felix Schultheiß (https://github.com/felix-smashdocs)
|
* Felix Schultheiß (https://github.com/felix-smashdocs)
|
||||||
* Jan Stein (https://github.com/janste63)
|
* Jan Stein (https://github.com/janste63)
|
||||||
|
* Timothé Perez (https://github.com/AchilleAsh)
|
||||||
|
@ -13,6 +13,7 @@ Changes in 0.23.1
|
|||||||
===========
|
===========
|
||||||
- Bug fix: ignore LazyReferenceFields when clearing _changed_fields #2484
|
- Bug fix: ignore LazyReferenceFields when clearing _changed_fields #2484
|
||||||
- Improve connection doc #2481
|
- Improve connection doc #2481
|
||||||
|
- Fix deepcopy on EmbeddedDocument
|
||||||
|
|
||||||
Changes in 0.23.0
|
Changes in 0.23.0
|
||||||
=================
|
=================
|
||||||
|
@ -99,6 +99,15 @@ class EmbeddedDocument(BaseDocument, metaclass=DocumentMetaclass):
|
|||||||
def __ne__(self, other):
|
def __ne__(self, other):
|
||||||
return not self.__eq__(other)
|
return not self.__eq__(other)
|
||||||
|
|
||||||
|
def __getstate__(self):
|
||||||
|
data = super().__getstate__()
|
||||||
|
data["_instance"] = self._instance
|
||||||
|
return data
|
||||||
|
|
||||||
|
def __setstate__(self, state):
|
||||||
|
super().__setstate__(state)
|
||||||
|
self._instance = state["_instance"]
|
||||||
|
|
||||||
def to_mongo(self, *args, **kwargs):
|
def to_mongo(self, *args, **kwargs):
|
||||||
data = super().to_mongo(*args, **kwargs)
|
data = super().to_mongo(*args, **kwargs)
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ import pickle
|
|||||||
import unittest
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
import weakref
|
import weakref
|
||||||
|
from copy import deepcopy
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import bson
|
import bson
|
||||||
@ -78,6 +79,14 @@ class TestDocumentInstance(MongoDBTestCase):
|
|||||||
else:
|
else:
|
||||||
assert field._instance == instance
|
assert field._instance == instance
|
||||||
|
|
||||||
|
def test_deepcopy(self):
|
||||||
|
"""Ensure that the _instance attribute on EmbeddedDocument exists after a deepcopy"""
|
||||||
|
|
||||||
|
doc = self.Job()
|
||||||
|
assert doc._instance is None
|
||||||
|
copied = deepcopy(doc)
|
||||||
|
assert copied._instance is None
|
||||||
|
|
||||||
def test_capped_collection(self):
|
def test_capped_collection(self):
|
||||||
"""Ensure that capped collections work properly."""
|
"""Ensure that capped collections work properly."""
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user