From 0c5f29d740c893126dcbf0a44aa2ce73e56acca5 Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 01:42:10 +0300 Subject: [PATCH 1/7] Get rid of unused iteration variables --- mongoengine/base/metaclasses.py | 2 +- mongoengine/dereference.py | 12 ++++++------ mongoengine/queryset/queryset.py | 4 ++-- tests/test_context_managers.py | 2 +- tests/test_dereference.py | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mongoengine/base/metaclasses.py b/mongoengine/base/metaclasses.py index b5981aaee..850a22a2d 100644 --- a/mongoengine/base/metaclasses.py +++ b/mongoengine/base/metaclasses.py @@ -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'): diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index 7fcc2ad26..a40acc755 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -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() 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) @@ -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( diff --git a/mongoengine/queryset/queryset.py b/mongoengine/queryset/queryset.py index 6e5f7220e..f94c825a4 100644 --- a/mongoengine/queryset/queryset.py +++ b/mongoengine/queryset/queryset.py @@ -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 @@ -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: diff --git a/tests/test_context_managers.py b/tests/test_context_managers.py index c201a5fc0..624266748 100644 --- a/tests/test_context_managers.py +++ b/tests/test_context_managers.py @@ -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) diff --git a/tests/test_dereference.py b/tests/test_dereference.py index e1ae37408..7811b2abb 100644 --- a/tests/test_dereference.py +++ b/tests/test_dereference.py @@ -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 @@ -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 @@ -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 From 63946b0b1b3c84eb5514995f20b7c531bc4d1613 Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 01:47:14 +0300 Subject: [PATCH 2/7] Get rid of unnecessary lambdas --- tests/document/json_serialisation.py | 6 ++---- tests/queryset/transform.py | 2 +- tests/test_dereference.py | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/document/json_serialisation.py b/tests/document/json_serialisation.py index f47b5de5b..df0b7a8ce 100644 --- a/tests/document/json_serialisation.py +++ b/tests/document/json_serialisation.py @@ -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) @@ -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 diff --git a/tests/queryset/transform.py b/tests/queryset/transform.py index a543317a9..f5ad985b4 100644 --- a/tests/queryset/transform.py +++ b/tests/queryset/transform.py @@ -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() diff --git a/tests/test_dereference.py b/tests/test_dereference.py index 7811b2abb..d009fb181 100644 --- a/tests/test_dereference.py +++ b/tests/test_dereference.py @@ -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 "" % self.name From cb58f2edcb74ac52da210a65f9e700b89f50220a Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 01:54:05 +0300 Subject: [PATCH 3/7] Remove unused local variables assignments --- tests/fixtures.py | 8 ++++---- tests/queryset/transform.py | 2 +- tests/test_signals.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/fixtures.py b/tests/fixtures.py index b3bf73e88..8cbbc7d84 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -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) diff --git a/tests/queryset/transform.py b/tests/queryset/transform.py index f5ad985b4..82f848bba 100644 --- a/tests/queryset/transform.py +++ b/tests/queryset/transform.py @@ -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}) diff --git a/tests/test_signals.py b/tests/test_signals.py index 78305b7d8..a7503559b 100644 --- a/tests/test_signals.py +++ b/tests/test_signals.py @@ -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", From 4b2c3f0a9ed062133ee8864435931f9f0fba16ae Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 01:57:58 +0300 Subject: [PATCH 4/7] Delete useless increment --- mongoengine/dereference.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index a40acc755..2a296f42b 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -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 From 59b98792cef4dc6670b84f888ed85cbb372b892f Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 02:01:31 +0300 Subject: [PATCH 5/7] Get rid of unused imports --- tests/document/inheritance.py | 2 -- tests/queryset/geo.py | 1 - 2 files changed, 3 deletions(-) diff --git a/tests/document/inheritance.py b/tests/document/inheritance.py index 7673a103d..5d2f83b94 100644 --- a/tests/document/inheritance.py +++ b/tests/document/inheritance.py @@ -4,8 +4,6 @@ import unittest import warnings -from datetime import datetime - from tests.fixtures import Base from mongoengine import Document, EmbeddedDocument, connect diff --git a/tests/queryset/geo.py b/tests/queryset/geo.py index 9aac44f53..09427c0b2 100644 --- a/tests/queryset/geo.py +++ b/tests/queryset/geo.py @@ -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 From d6432279e7dbe185c7da668dd6ee0da8e75bce6c Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 02:06:51 +0300 Subject: [PATCH 6/7] Delete unused args and kwargs BaseDict interface is more like dict interface now --- mongoengine/base/datastructures.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mongoengine/base/datastructures.py b/mongoengine/base/datastructures.py index e4d2b3922..b407ace4b 100644 --- a/mongoengine/base/datastructures.py +++ b/mongoengine/base/datastructures.py @@ -64,7 +64,7 @@ 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() @@ -72,7 +72,7 @@ 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() @@ -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() From 989f79d6b07529ce2b17ab78fe08664d1b1d501d Mon Sep 17 00:00:00 2001 From: Aliaksei Palkanau Date: Thu, 28 Jan 2016 02:11:30 +0300 Subject: [PATCH 7/7] Get rid of QuerySetNoDeRef It's useless anyway, there are neither instantiations of QuerySetNoDeRef nor calls of __derefence. No client could possibly rely on this class --- mongoengine/queryset/queryset.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mongoengine/queryset/queryset.py b/mongoengine/queryset/queryset.py index f94c825a4..6d194dc59 100644 --- a/mongoengine/queryset/queryset.py +++ b/mongoengine/queryset/queryset.py @@ -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