diff --git a/mongoengine/base/document.py b/mongoengine/base/document.py index 7bc18877..78ee5997 100644 --- a/mongoengine/base/document.py +++ b/mongoengine/base/document.py @@ -19,7 +19,6 @@ from mongoengine.base.fields import ComplexBaseField from mongoengine.common import _import_class from mongoengine.errors import (FieldDoesNotExist, InvalidDocumentError, LookUpError, OperationError, ValidationError) -from mongoengine.python_support import PY3 __all__ = ('BaseDocument',) @@ -256,7 +255,7 @@ class BaseDocument(object): def __str__(self): # TODO this could be simpler? if hasattr(self, '__unicode__'): - if PY3: + if six.PY3: return self.__unicode__() else: return six.text_type(self).encode('utf-8') diff --git a/mongoengine/base/metaclasses.py b/mongoengine/base/metaclasses.py index b9a54270..0e7fcc12 100644 --- a/mongoengine/base/metaclasses.py +++ b/mongoengine/base/metaclasses.py @@ -1,10 +1,11 @@ import warnings +import six + from mongoengine.base.common import _document_registry from mongoengine.base.fields import BaseField, ComplexBaseField, ObjectIdField from mongoengine.common import _import_class from mongoengine.errors import InvalidDocumentError -from mongoengine.python_support import PY3 from mongoengine.queryset import (DO_NOTHING, DoesNotExist, MultipleObjectsReturned, QuerySetManager) @@ -159,7 +160,7 @@ class DocumentMetaclass(type): # module continues to use im_func and im_self, so the code below # copies __func__ into im_func and __self__ into im_self for # classmethod objects in Document derived classes. - if PY3: + if six.PY3: for val in new_class.__dict__.values(): if isinstance(val, classmethod): f = val.__get__(new_class) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 3eb2e58a..9cae4c6a 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -30,7 +30,7 @@ from mongoengine.base import (BaseDocument, BaseField, ComplexBaseField, from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db from mongoengine.document import Document, EmbeddedDocument from mongoengine.errors import DoesNotExist, ValidationError -from mongoengine.python_support import PY3, StringIO +from mongoengine.python_support import StringIO from mongoengine.queryset import DO_NOTHING, QuerySet try: @@ -1307,7 +1307,7 @@ class BinaryField(BaseField): def __set__(self, instance, value): """Handle bytearrays in python 3.1""" - if PY3 and isinstance(value, bytearray): + if six.PY3 and isinstance(value, bytearray): value = six.binary_type(value) return super(BinaryField, self).__set__(instance, value) @@ -1722,7 +1722,7 @@ class ImageField(FileField): for att_name, att in extra_args.items(): value = None if isinstance(att, (tuple, list)): - if PY3: + if six.PY3: value = dict(itertools.zip_longest(params_size, att, fillvalue=None)) else: diff --git a/mongoengine/python_support.py b/mongoengine/python_support.py index df46c8dc..64205c3d 100644 --- a/mongoengine/python_support.py +++ b/mongoengine/python_support.py @@ -13,14 +13,11 @@ else: IS_PYMONGO_3 = True -PY3 = sys.version_info[0] == 3 - - # six.BytesIO resolves to StringIO.StringIO in Py2 and io.BytesIO in Py3. StringIO = six.BytesIO # Additionally for Py2, try to use the faster cStringIO, if available -if not PY3: +if not six.PY3: try: import cStringIO except ImportError: diff --git a/tests/fields/fields.py b/tests/fields/fields.py index 183a6f9d..2df60eed 100644 --- a/tests/fields/fields.py +++ b/tests/fields/fields.py @@ -28,7 +28,6 @@ from mongoengine.connection import get_db from mongoengine.base import (BaseDict, BaseField, EmbeddedDocumentList, _document_registry) from mongoengine.errors import NotRegistered, DoesNotExist -from mongoengine.python_support import PY3 __all__ = ("FieldTest", "EmbeddedDocumentListFieldTestCase") @@ -653,7 +652,7 @@ class FieldTest(unittest.TestCase): self.assertNotEqual(log.date, d1) self.assertEqual(log.date, d2) - if not PY3: + if not six.PY3: # Pre UTC dates microseconds below 1000 are dropped # This does not seem to be true in PY3 d1 = datetime.datetime(1969, 12, 31, 23, 59, 59, 999) diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index 2c00838a..863f779d 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -9,13 +9,13 @@ from nose.plugins.skip import SkipTest import pymongo from pymongo.errors import ConfigurationError from pymongo.read_preferences import ReadPreference - +import six from mongoengine import * from mongoengine.connection import get_connection, get_db from mongoengine.context_managers import query_counter, switch_db from mongoengine.errors import InvalidQueryError -from mongoengine.python_support import IS_PYMONGO_3, PY3 +from mongoengine.python_support import IS_PYMONGO_3 from mongoengine.queryset import (DoesNotExist, MultipleObjectsReturned, QuerySet, QuerySetManager, queryset_manager) @@ -4089,7 +4089,7 @@ class QuerySetTest(unittest.TestCase): "A0", "%s" % self.Person.objects.order_by('name').scalar('name').first()) self.assertEqual( "A0", "%s" % self.Person.objects.scalar('name').order_by('name')[0]) - if PY3: + if six.PY3: self.assertEqual("['A1', 'A2']", "%s" % self.Person.objects.order_by( 'age').scalar('name')[1:3]) self.assertEqual("['A51', 'A52']", "%s" % self.Person.objects.order_by( @@ -4107,7 +4107,7 @@ class QuerySetTest(unittest.TestCase): pks = self.Person.objects.order_by('age').scalar('pk')[1:3] names = self.Person.objects.scalar('name').in_bulk(list(pks)).values() - if PY3: + if six.PY3: expected = "['A1', 'A2']" else: expected = "[u'A1', u'A2']"