Closed ramnes closed 6 years ago
PyMongo 3.6.0 breaks several features of Mongo-Thingy:
============================================================================================== test session starts =============================================================================================== platform linux -- Python 3.4.6, pytest-3.0.7, py-1.4.34, pluggy-0.4.0 -- /home/ramnes/mm/mongo-thingy/.venv/bin/python3.4 cachedir: .cache rootdir: /home/ramnes/mm/mongo-thingy, inifile: setup.cfg plugins: cov-2.4.0 collected 40 items tests/__init__.py::test_thingy_database PASSED tests/__init__.py::test_thingy_collection PASSED tests/__init__.py::test_thingy_names PASSED tests/__init__.py::test_thingy_database_name PASSED tests/__init__.py::test_thingy_collection_name PASSED tests/__init__.py::test_thingy_database_from_collection PASSED tests/__init__.py::test_thingy_collection_from_database PASSED tests/__init__.py::test_thingy_database_from_name PASSED tests/__init__.py::test_thingy_collection_from_name PASSED tests/__init__.py::test_thingy_add_index PASSED tests/__init__.py::test_thingy_count PASSED tests/__init__.py::test_thingy_connect_disconnect[disconnect0-connect0] PASSED tests/__init__.py::test_thingy_connect_disconnect[disconnect0-connect1] PASSED tests/__init__.py::test_thingy_connect_disconnect[disconnect1-connect0] PASSED tests/__init__.py::test_thingy_connect_disconnect[disconnect1-connect1] PASSED tests/__init__.py::test_thingy_create_index PASSED tests/__init__.py::test_thingy_create_indexes PASSED tests/__init__.py::test_thingy_distinct PASSED tests/__init__.py::test_thingy_find PASSED tests/__init__.py::test_thingy_find_one PASSED tests/__init__.py::test_thingy_find_one_and_replace PASSED tests/__init__.py::test_thingy_id PASSED tests/__init__.py::test_thingy_save PASSED tests/__init__.py::test_thingy_save_force_insert PASSED tests/__init__.py::test_thingy_delete PASSED tests/__init__.py::test_create_indexes PASSED tests/__init__.py::test_github_issue_6 PASSED tests/cursor.py::test_cursor_bind PASSED tests/cursor.py::test_cursor_getitem FAILED tests/cursor.py::test_cursor_next PASSED tests/cursor.py::test_cursor_view PASSED tests/versioned.py::test_version_save PASSED tests/versioned.py::test_version_indexes PASSED tests/versioned.py::test_versioned_get_revisions FAILED tests/versioned.py::test_versioned_author FAILED tests/versioned.py::test_versioned_version PASSED tests/versioned.py::test_versioned_revisions FAILED tests/versioned.py::test_versioned_revisions_operation FAILED tests/versioned.py::test_versioned_versioned PASSED tests/versioned.py::test_versioned_revert FAILED ----------- coverage: platform linux, python 3.4.6-final-0 ----------- Name Stmts Miss Cover Missing --------------------------------------------------------- mongo_thingy/__init__.py 99 0 100% mongo_thingy/cursor.py 26 1 96% 16 mongo_thingy/versioned.py 59 5 92% 35, 85-89 --------------------------------------------------------- TOTAL 184 6 97% FAIL Required test coverage of 100% not reached. Total coverage: 96.74% ==================================================================================================== FAILURES ==================================================================================================== ______________________________________________________________________________________________ test_cursor_getitem _______________________________________________________________________________________________ collection = Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_cursor_getitem') def test_cursor_getitem(collection): class Foo(Thingy): _collection = collection collection.insert_many([{"bar": "baz"}, {"bar": "qux"}]) cursor = Cursor(Foo, collection) > result = cursor[0] Foo = <class 'tests.cursor.test_cursor_getitem.<locals>.Foo'> collection = Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_cursor_getitem') cursor = <mongo_thingy.cursor.Cursor object at 0x7ff86322f780> tests/cursor.py:23: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mongo_thingy/cursor.py:15: in __getitem__ document = super(Cursor, self).__getitem__(index) .venv/lib/python3.4/site-packages/pymongo/cursor.py:607: in __getitem__ clone = self.clone() .venv/lib/python3.4/site-packages/pymongo/cursor.py:268: in clone return self._clone(True) .venv/lib/python3.4/site-packages/pymongo/cursor.py:276: in _clone base = self._clone_base(None) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <mongo_thingy.cursor.Cursor object at 0x7ff86322f780>, session = None def _clone_base(self, session): """Creates an empty Cursor object for information to be copied into. """ > return self.__class__(self.__collection, session=session) E TypeError: __init__() missing 1 required positional argument: 'collection' self = <mongo_thingy.cursor.Cursor object at 0x7ff86322f780> session = None .venv/lib/python3.4/site-packages/pymongo/cursor.py:293: TypeError ---------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------- Exception ignored in: <bound method Cursor.__del__ of <mongo_thingy.cursor.Cursor object at 0x7ff86322f630>> Traceback (most recent call last): File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 241, in __del__ self.__die() File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 298, in __die already_killed = self.__killed AttributeError: 'Cursor' object has no attribute '_Cursor__killed' __________________________________________________________________________________________ test_versioned_get_revisions __________________________________________________________________________________________ TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> def test_versioned_get_revisions(TestVersionedThingy): thingy = TestVersionedThingy({"bar": "baz"}).save() cursor = thingy.get_revisions() assert isinstance(cursor, Cursor) > version = cursor[0] TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> cursor = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863c5d390> thingy = TestVersionedThingy({'bar': 'baz', '_id': ObjectId('5a86cbcd08255411f3cce174')}) tests/versioned.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mongo_thingy/versioned.py:18: in __getitem__ return super(RevisionCursor, self).__getitem__(index) mongo_thingy/cursor.py:15: in __getitem__ document = super(Cursor, self).__getitem__(index) .venv/lib/python3.4/site-packages/pymongo/cursor.py:607: in __getitem__ clone = self.clone() .venv/lib/python3.4/site-packages/pymongo/cursor.py:268: in clone return self._clone(True) .venv/lib/python3.4/site-packages/pymongo/cursor.py:276: in _clone base = self._clone_base(None) .venv/lib/python3.4/site-packages/pymongo/cursor.py:293: in _clone_base return self.__class__(self.__collection, session=session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863c5d1d0> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),), kwargs = {'session': None} def __init__(self, *args, **kwargs): self.thingy = kwargs.pop("thingy", None) > super(RevisionCursor, self).__init__(*args, **kwargs) E TypeError: __init__() missing 1 required positional argument: 'collection' __class__ = <class 'mongo_thingy.versioned.RevisionCursor'> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),) kwargs = {'session': None} self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863c5d1d0> mongo_thingy/versioned.py:13: TypeError _____________________________________________________________________________________________ test_versioned_author ______________________________________________________________________________________________ TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> def test_versioned_author(TestVersionedThingy): thingy = TestVersionedThingy({"bar": "baz"}).save() > assert thingy.revisions[0].author is None TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> thingy = TestVersionedThingy({'bar': 'baz', '_id': ObjectId('5a86cbcd08255411f3cce177')}) tests/versioned.py:29: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mongo_thingy/versioned.py:18: in __getitem__ return super(RevisionCursor, self).__getitem__(index) mongo_thingy/cursor.py:15: in __getitem__ document = super(Cursor, self).__getitem__(index) .venv/lib/python3.4/site-packages/pymongo/cursor.py:607: in __getitem__ clone = self.clone() .venv/lib/python3.4/site-packages/pymongo/cursor.py:268: in clone return self._clone(True) .venv/lib/python3.4/site-packages/pymongo/cursor.py:276: in _clone base = self._clone_base(None) .venv/lib/python3.4/site-packages/pymongo/cursor.py:293: in _clone_base return self.__class__(self.__collection, session=session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff864330400> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),), kwargs = {'session': None} def __init__(self, *args, **kwargs): self.thingy = kwargs.pop("thingy", None) > super(RevisionCursor, self).__init__(*args, **kwargs) E TypeError: __init__() missing 1 required positional argument: 'collection' __class__ = <class 'mongo_thingy.versioned.RevisionCursor'> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),) kwargs = {'session': None} self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff864330400> mongo_thingy/versioned.py:13: TypeError ____________________________________________________________________________________________ test_versioned_revisions ____________________________________________________________________________________________ TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> def test_versioned_revisions(TestVersionedThingy): thingy = TestVersionedThingy({"bar": "baz"}).save() thingy.bar = "qux" thingy.save() > assert thingy.revisions[0].document.get("bar") == "baz" TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> thingy = TestVersionedThingy({'bar': 'qux', '_id': ObjectId('5a86cbce08255411f3cce17d')}) tests/versioned.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mongo_thingy/versioned.py:18: in __getitem__ return super(RevisionCursor, self).__getitem__(index) mongo_thingy/cursor.py:15: in __getitem__ document = super(Cursor, self).__getitem__(index) .venv/lib/python3.4/site-packages/pymongo/cursor.py:607: in __getitem__ clone = self.clone() .venv/lib/python3.4/site-packages/pymongo/cursor.py:268: in clone return self._clone(True) .venv/lib/python3.4/site-packages/pymongo/cursor.py:276: in _clone base = self._clone_base(None) .venv/lib/python3.4/site-packages/pymongo/cursor.py:293: in _clone_base return self.__class__(self.__collection, session=session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863bf5588> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),), kwargs = {'session': None} def __init__(self, *args, **kwargs): self.thingy = kwargs.pop("thingy", None) > super(RevisionCursor, self).__init__(*args, **kwargs) E TypeError: __init__() missing 1 required positional argument: 'collection' __class__ = <class 'mongo_thingy.versioned.RevisionCursor'> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),) kwargs = {'session': None} self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863bf5588> mongo_thingy/versioned.py:13: TypeError _______________________________________________________________________________________ test_versioned_revisions_operation _______________________________________________________________________________________ TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> def test_versioned_revisions_operation(TestVersionedThingy): thingy = TestVersionedThingy({"bar": "baz"}).save() > assert thingy.revisions[0].operation == "create" TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> thingy = TestVersionedThingy({'bar': 'baz', '_id': ObjectId('5a86cbce08255411f3cce181')}) tests/versioned.py:61: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mongo_thingy/versioned.py:18: in __getitem__ return super(RevisionCursor, self).__getitem__(index) mongo_thingy/cursor.py:15: in __getitem__ document = super(Cursor, self).__getitem__(index) .venv/lib/python3.4/site-packages/pymongo/cursor.py:607: in __getitem__ clone = self.clone() .venv/lib/python3.4/site-packages/pymongo/cursor.py:268: in clone return self._clone(True) .venv/lib/python3.4/site-packages/pymongo/cursor.py:276: in _clone base = self._clone_base(None) .venv/lib/python3.4/site-packages/pymongo/cursor.py:293: in _clone_base return self.__class__(self.__collection, session=session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863bdc898> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),), kwargs = {'session': None} def __init__(self, *args, **kwargs): self.thingy = kwargs.pop("thingy", None) > super(RevisionCursor, self).__init__(*args, **kwargs) E TypeError: __init__() missing 1 required positional argument: 'collection' __class__ = <class 'mongo_thingy.versioned.RevisionCursor'> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),) kwargs = {'session': None} self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff863bdc898> mongo_thingy/versioned.py:13: TypeError _____________________________________________________________________________________________ test_versioned_revert ______________________________________________________________________________________________ TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> def test_versioned_revert(TestVersionedThingy): thingy = TestVersionedThingy({"bar": "baz"}).save() assert thingy.version == 1 thingy.revert() assert thingy.version == 2 assert thingy.bar is None > thingy.revert() TestVersionedThingy = <class 'tests.conftest.TestVersionedThingy.<locals>.TestVersionedThingy'> thingy = TestVersionedThingy({'_id': ObjectId('5a86cbce08255411f3cce187')}) tests/versioned.py:90: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mongo_thingy/versioned.py:74: in revert previous_version = self.revisions[-2].document mongo_thingy/versioned.py:18: in __getitem__ return super(RevisionCursor, self).__getitem__(index) mongo_thingy/cursor.py:15: in __getitem__ document = super(Cursor, self).__getitem__(index) .venv/lib/python3.4/site-packages/pymongo/cursor.py:607: in __getitem__ clone = self.clone() .venv/lib/python3.4/site-packages/pymongo/cursor.py:268: in clone return self._clone(True) .venv/lib/python3.4/site-packages/pymongo/cursor.py:276: in _clone base = self._clone_base(None) .venv/lib/python3.4/site-packages/pymongo/cursor.py:293: in _clone_base return self.__class__(self.__collection, session=session) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff86425bfd0> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),), kwargs = {'session': None} def __init__(self, *args, **kwargs): self.thingy = kwargs.pop("thingy", None) > super(RevisionCursor, self).__init__(*args, **kwargs) E TypeError: __init__() missing 1 required positional argument: 'collection' __class__ = <class 'mongo_thingy.versioned.RevisionCursor'> args = (Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mongo_thingy_tests'), 'test_revision'),) kwargs = {'session': None} self = <mongo_thingy.versioned.RevisionCursor object at 0x7ff86425bfd0> mongo_thingy/versioned.py:13: TypeError ====================================================================================== 6 failed, 34 passed in 2.61 seconds ======================================================================================= Exception ignored in: <bound method RevisionCursor.__del__ of <mongo_thingy.versioned.RevisionCursor object at 0x7ff863c5d1d0>> Traceback (most recent call last): File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 241, in __del__ self.__die() File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 298, in __die already_killed = self.__killed AttributeError: 'RevisionCursor' object has no attribute '_Cursor__killed' Exception ignored in: <bound method RevisionCursor.__del__ of <mongo_thingy.versioned.RevisionCursor object at 0x7ff864330400>> Traceback (most recent call last): File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 241, in __del__ self.__die() File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 298, in __die already_killed = self.__killed AttributeError: 'RevisionCursor' object has no attribute '_Cursor__killed' Exception ignored in: <bound method RevisionCursor.__del__ of <mongo_thingy.versioned.RevisionCursor object at 0x7ff863bf5588>> Traceback (most recent call last): File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 241, in __del__ self.__die() File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 298, in __die already_killed = self.__killed AttributeError: 'RevisionCursor' object has no attribute '_Cursor__killed' Exception ignored in: <bound method RevisionCursor.__del__ of <mongo_thingy.versioned.RevisionCursor object at 0x7ff863bdc898>> Traceback (most recent call last): File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 241, in __del__ self.__die() File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 298, in __die already_killed = self.__killed AttributeError: 'RevisionCursor' object has no attribute '_Cursor__killed' Exception ignored in: <bound method RevisionCursor.__del__ of <mongo_thingy.versioned.RevisionCursor object at 0x7ff86425bfd0>> Traceback (most recent call last): File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 241, in __del__ File "/home/ramnes/mm/mongo-thingy/.venv/lib/python3.4/site-packages/pymongo/cursor.py", line 298, in __die AttributeError: 'RevisionCursor' object has no attribute '_Cursor__killed'
PyMongo 3.6.0 breaks several features of Mongo-Thingy: