From bb81652ffeb1538a8b40b2c6377f7bf5de5c6003 Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Thu, 8 Dec 2016 10:33:15 -0500 Subject: [PATCH] nicer imports --- mongoengine/base/__init__.py | 29 +++++++++++++++++++++++++++++ mongoengine/base/common.py | 10 +++++++++- mongoengine/base/datastructures.py | 2 +- mongoengine/base/document.py | 2 +- mongoengine/base/fields.py | 12 +++--------- mongoengine/queryset/base.py | 2 +- mongoengine/queryset/transform.py | 2 +- tests/document/instance.py | 2 +- tests/fields/fields.py | 5 ++--- 9 files changed, 48 insertions(+), 18 deletions(-) diff --git a/mongoengine/base/__init__.py b/mongoengine/base/__init__.py index e69de29b..f0663139 100644 --- a/mongoengine/base/__init__.py +++ b/mongoengine/base/__init__.py @@ -0,0 +1,29 @@ +# Base module is split into several files for convenience. Files inside of +# this module should import from a specific submodule (e.g. +# `from mongoengine.base.document import BaseDocument`), but all of the +# other modules should import directly from the top-level module (e.g. +# `from mongoengine.base import BaseDocument`). This approach is cleaner and +# also helps with cyclical import errors. +from mongoengine.base.common import * +from mongoengine.base.datastructures import * +from mongoengine.base.document import * +from mongoengine.base.fields import * +from mongoengine.base.metaclasses import * + +__all__ = ( + # common + 'ALLOW_INHERITANCE', 'UPDATE_OPERATORS', '_document_registry', + 'get_document', + + # datastructures + 'BaseDict', 'BaseList', 'EmbeddedDocumentList', + + # document + 'BaseDocument', + + # fields + 'BaseField', 'ComplexBaseField', 'ObjectIdField', 'GeoJsonBaseField', + + # metaclasses + 'DocumentMetaclass', 'TopLevelDocumentMetaclass' +) diff --git a/mongoengine/base/common.py b/mongoengine/base/common.py index 814f755d..7caaa695 100644 --- a/mongoengine/base/common.py +++ b/mongoengine/base/common.py @@ -1,9 +1,17 @@ from mongoengine.errors import NotRegistered -__all__ = ('get_document', '_document_registry') +__all__ = ('ALLOW_INHERITANCE', 'UPDATE_OPERATORS', 'get_document', + '_document_registry') + ALLOW_INHERITANCE = False # TODO is this really necessary? + +UPDATE_OPERATORS = set(['set', 'unset', 'inc', 'dec', 'pop', 'push', + 'push_all', 'pull', 'pull_all', 'add_to_set', + 'set_on_insert', 'min', 'max']) + + _document_registry = {} diff --git a/mongoengine/base/datastructures.py b/mongoengine/base/datastructures.py index e94a2f24..9d1bc9ca 100644 --- a/mongoengine/base/datastructures.py +++ b/mongoengine/base/datastructures.py @@ -6,7 +6,7 @@ import six from mongoengine.common import _import_class from mongoengine.errors import DoesNotExist, MultipleObjectsReturned -__all__ = ("BaseDict", "BaseList", "EmbeddedDocumentList") +__all__ = ('BaseDict', 'BaseList', 'EmbeddedDocumentList') class BaseDict(dict): diff --git a/mongoengine/base/document.py b/mongoengine/base/document.py index 1f3ec51c..e5945369 100644 --- a/mongoengine/base/document.py +++ b/mongoengine/base/document.py @@ -21,7 +21,7 @@ from mongoengine.errors import (FieldDoesNotExist, InvalidDocumentError, LookUpError, ValidationError, OperationError) from mongoengine.python_support import PY3 -__all__ = ('BaseDocument', 'NON_FIELD_ERRORS') +__all__ = ('BaseDocument',) NON_FIELD_ERRORS = '__all__' diff --git a/mongoengine/base/fields.py b/mongoengine/base/fields.py index ba001b23..c9505cc7 100644 --- a/mongoengine/base/fields.py +++ b/mongoengine/base/fields.py @@ -6,10 +6,9 @@ from bson import DBRef, ObjectId, SON import pymongo import six -from mongoengine.base.common import ALLOW_INHERITANCE -from mongoengine.base.datastructures import ( - BaseDict, BaseList, EmbeddedDocumentList -) +from mongoengine.base.common import ALLOW_INHERITANCE, UPDATE_OPERATORS +from mongoengine.base.datastructures import (BaseDict, BaseList, + EmbeddedDocumentList) from mongoengine.common import _import_class from mongoengine.errors import ValidationError @@ -18,11 +17,6 @@ __all__ = ('BaseField', 'ComplexBaseField', 'ObjectIdField', 'GeoJsonBaseField') -UPDATE_OPERATORS = set(['set', 'unset', 'inc', 'dec', 'pop', 'push', - 'push_all', 'pull', 'pull_all', 'add_to_set', - 'set_on_insert', 'min', 'max']) - - class BaseField(object): """A base class for fields in a MongoDB document. Instances of this class may be added to subclasses of `Document` to define a document's schema. diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 0ddac361..6c349ff7 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -15,7 +15,7 @@ from pymongo.common import validate_read_preference import six from mongoengine import signals -from mongoengine.base.common import get_document +from mongoengine.base import get_document from mongoengine.common import _import_class from mongoengine.connection import get_db from mongoengine.context_managers import switch_db diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index 230f3ec0..b141d944 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -4,7 +4,7 @@ from bson import SON import pymongo import six -from mongoengine.base.fields import UPDATE_OPERATORS +from mongoengine.base import UPDATE_OPERATORS from mongoengine.common import _import_class from mongoengine.connection import get_connection from mongoengine.errors import InvalidQueryError diff --git a/tests/document/instance.py b/tests/document/instance.py index 0ab1caca..a34b8360 100644 --- a/tests/document/instance.py +++ b/tests/document/instance.py @@ -13,7 +13,7 @@ from tests.fixtures import (PickleEmbedded, PickleTest, PickleSignalsTest, PickleDynamicEmbedded, PickleDynamicTest) from mongoengine import * -from mongoengine.base.common import get_document, _document_registry +from mongoengine.base import get_document, _document_registry from mongoengine.connection import get_db from mongoengine.errors import (NotRegistered, InvalidDocumentError, InvalidQueryError, NotUniqueError, diff --git a/tests/fields/fields.py b/tests/fields/fields.py index 1f22b1ed..183a6f9d 100644 --- a/tests/fields/fields.py +++ b/tests/fields/fields.py @@ -25,9 +25,8 @@ except ImportError: from mongoengine import * from mongoengine.connection import get_db -from mongoengine.base.common import _document_registry -from mongoengine.base.datastructures import BaseDict, EmbeddedDocumentList -from mongoengine.base.fields import BaseField +from mongoengine.base import (BaseDict, BaseField, EmbeddedDocumentList, + _document_registry) from mongoengine.errors import NotRegistered, DoesNotExist from mongoengine.python_support import PY3