Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions mongoengine/base/datastructures.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,15 @@ def __setstate__(self, state):
self = state
return self

def clear(self, *args, **kwargs):
def clear(self):
self._mark_as_changed()
return super(BaseDict, self).clear()

def pop(self, *args, **kwargs):
self._mark_as_changed()
return super(BaseDict, self).pop(*args, **kwargs)

def popitem(self, *args, **kwargs):
def popitem(self):
self._mark_as_changed()
return super(BaseDict, self).popitem()

Expand Down Expand Up @@ -188,7 +188,7 @@ def remove(self, *args, **kwargs):
self._mark_as_changed()
return super(BaseList, self).remove(*args, **kwargs)

def reverse(self, *args, **kwargs):
def reverse(self):
self._mark_as_changed()
return super(BaseList, self).reverse()

Expand Down
2 changes: 1 addition & 1 deletion mongoengine/base/metaclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ def __new__(cls, name, bases, attrs):
# copies __func__ into im_func and __self__ into im_self for
# classmethod objects in Document derived classes.
if PY3:
for key, val in new_class.__dict__.items():
for val in new_class.__dict__.values():
if isinstance(val, classmethod):
f = val.__get__(new_class)
if hasattr(f, '__func__') and not hasattr(f, 'im_func'):
Expand Down
13 changes: 6 additions & 7 deletions mongoengine/dereference.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,15 @@ def _find_references(self, items, depth=0):
if not items or depth >= self.max_depth:
return reference_map

# Determine the iterator to use
if not hasattr(items, 'items'):
iterator = enumerate(items)
# Determine the iterable to use
if hasattr(items, 'values'):
iterable = items.itervalues()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

itervalues isn't python 3 compatible.

Edit: lots of non python 3 compatible constructs are used. No clue why this doesn't break the tests.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, 2to3 takes care of that:

extra_opts['use_2to3'] = True

You might verify that it gets translated to iterable = iter(items.values()) as mentioned in https://www.python.org/dev/peps/pep-0469/

else:
iterator = items.iteritems()
iterable = items

# Recursively find dbreferences
depth += 1
for k, item in iterator:
for item in iterable:
if isinstance(item, (Document, EmbeddedDocument)):
for field_name, field in item._fields.iteritems():
v = item._data.get(field_name, None)
Expand Down Expand Up @@ -217,7 +217,7 @@ def _attach_objects(self, items, depth=0, instance=None, name=None):
if k in self.object_map and not is_list:
data[k] = self.object_map[k]
elif isinstance(v, (Document, EmbeddedDocument)):
for field_name, field in v._fields.iteritems():
for field_name in v._fields.iterkeys():
v = data[k]._data.get(field_name, None)
if isinstance(v, DBRef):
data[k]._data[field_name] = self.object_map.get(
Expand All @@ -238,5 +238,4 @@ def _attach_objects(self, items, depth=0, instance=None, name=None):
if is_list:
return tuple(data) if as_tuple else list_type(data, instance, name)
return BaseDict(data, instance, name)
depth += 1
return data
11 changes: 2 additions & 9 deletions mongoengine/queryset/queryset.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def _populate_cache(self):
self._result_cache = []
if self._has_more:
try:
for i in xrange(ITER_CHUNK_SIZE):
for _ in xrange(ITER_CHUNK_SIZE):
self._result_cache.append(self.next())
except StopIteration:
self._has_more = False
Expand Down Expand Up @@ -137,7 +137,7 @@ def __repr__(self):
return '.. queryset mid-iteration ..'

data = []
for i in xrange(REPR_OUTPUT_SIZE + 1):
for _ in xrange(REPR_OUTPUT_SIZE + 1):
try:
data.append(self.next())
except StopIteration:
Expand All @@ -154,10 +154,3 @@ def __iter__(self):
queryset = self.clone()
queryset.rewind()
return queryset


class QuerySetNoDeRef(QuerySet):
"""Special no_dereference QuerySet"""

def __dereference(items, max_depth=1, instance=None, name=None):
return items
2 changes: 0 additions & 2 deletions tests/document/inheritance.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import unittest
import warnings

from datetime import datetime

from tests.fixtures import Base

from mongoengine import Document, EmbeddedDocument, connect
Expand Down
6 changes: 2 additions & 4 deletions tests/document/json_serialisation.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@ class Doc(Document):
float_field = FloatField(default=1.1)
boolean_field = BooleanField(default=True)
datetime_field = DateTimeField(default=datetime.now)
embedded_document_field = EmbeddedDocumentField(EmbeddedDoc,
default=lambda: EmbeddedDoc())
embedded_document_field = EmbeddedDocumentField(EmbeddedDoc, default=EmbeddedDoc)
list_field = ListField(default=lambda: [1, 2, 3])
dict_field = DictField(default=lambda: {"hello": "world"})
objectid_field = ObjectIdField(default=ObjectId)
Expand All @@ -100,8 +99,7 @@ class Doc(Document):
geo_point_field = GeoPointField(default=lambda: [1, 2])
sequence_field = SequenceField()
uuid_field = UUIDField(default=uuid.uuid4)
generic_embedded_document_field = GenericEmbeddedDocumentField(
default=lambda: EmbeddedDoc())
generic_embedded_document_field = GenericEmbeddedDocumentField(default=EmbeddedDoc)

def __eq__(self, other):
import json
Expand Down
8 changes: 4 additions & 4 deletions tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ class PickleSignalsTest(Document):
lists = ListField(StringField())

@classmethod
def post_save(self, sender, document, created, **kwargs):
pickled = pickle.dumps(document)
def post_save(self, sender, document, created):
pickle.dumps(document)

@classmethod
def post_delete(self, sender, document, **kwargs):
pickled = pickle.dumps(document)
def post_delete(self, sender, document):
pickle.dumps(document)

signals.post_save.connect(PickleSignalsTest.post_save, sender=PickleSignalsTest)
signals.post_delete.connect(PickleSignalsTest.post_delete, sender=PickleSignalsTest)
Expand Down
1 change: 0 additions & 1 deletion tests/queryset/geo.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import unittest
from datetime import datetime, timedelta

from pymongo.errors import OperationFailure
from mongoengine import *
from mongoengine.connection import get_connection
from nose.plugins.skip import SkipTest
Expand Down
4 changes: 2 additions & 2 deletions tests/queryset/transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class Doc(Document):
Doc.drop_collection()

doc = Doc().save()
dic_doc = DicDoc().save()
DicDoc().save()

for k, v in (("set", "$set"), ("set_on_insert", "$setOnInsert"), ("push", "$push")):
update = transform.update(DicDoc, **{"%s__dictField__test" % k: doc})
Expand Down Expand Up @@ -232,7 +232,7 @@ class Event(Document):
box = [(35.0, -125.0), (40.0, -100.0)]
# I *meant* to execute location__within_box=box
events = Event.objects(location__within=box)
self.assertRaises(InvalidQueryError, lambda: events.count())
self.assertRaises(InvalidQueryError, events.count)

if __name__ == '__main__':
unittest.main()
2 changes: 1 addition & 1 deletion tests/test_context_managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ def test_query_counter(self):
with query_counter() as q:
self.assertEqual(0, q)

for i in xrange(1, 51):
for _ in xrange(1, 51):
db.test.find({}).count()

self.assertEqual(50, q)
Expand Down
8 changes: 4 additions & 4 deletions tests/test_dereference.py
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ class Other(EmbeddedDocument):

class Person(Document):
name = StringField()
other = EmbeddedDocumentField(Other, default=lambda: Other())
other = EmbeddedDocumentField(Other, default=Other)

def __repr__(self):
return "<Person: %s>" % self.name
Expand Down Expand Up @@ -629,7 +629,7 @@ class Group(Document):
[m for m in group_obj.members]
self.assertEqual(q, 2)

for k, m in group_obj.members.iteritems():
for m in group_obj.members.itervalues():
self.assertTrue(isinstance(m, User))

# Document select_related
Expand Down Expand Up @@ -802,7 +802,7 @@ class Group(Document):
[m for m in group_obj.members]
self.assertEqual(q, 2)

for k, m in group_obj.members.iteritems():
for m in group_obj.members.itervalues():
self.assertTrue(isinstance(m, UserA))

# Document select_related
Expand Down Expand Up @@ -890,7 +890,7 @@ class Group(Document):
[m for m in group_obj.members]
self.assertEqual(q, 4)

for k, m in group_obj.members.iteritems():
for m in group_obj.members.itervalues():
self.assertTrue('User' in m.__class__.__name__)

# Document select_related
Expand Down
2 changes: 1 addition & 1 deletion tests/test_signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ def load_existing_author():
a = self.Author(name='Bill Shakespeare')
a.save()
self.get_signal_output(lambda: None) # eliminate signal output
a1 = self.Author.objects(name='Bill Shakespeare')[0]
self.Author.objects(name='Bill Shakespeare')[0]

self.assertEqual(self.get_signal_output(create_author), [
"pre_init signal, Author",
Expand Down