From ff596fcb7ec7206c7cae7dbddf4a8cb168a2256d Mon Sep 17 00:00:00 2001 From: Bastien Gerard Date: Mon, 29 Mar 2021 21:47:42 +0200 Subject: [PATCH 1/4] replace flake8-import-order by isort --- .pre-commit-config.yaml | 8 ++++++-- mongoengine/__init__.py | 15 ++++++++------- mongoengine/base/document.py | 3 +-- mongoengine/base/fields.py | 8 ++++++-- mongoengine/base/metaclasses.py | 7 +++++-- mongoengine/connection.py | 2 +- mongoengine/dereference.py | 9 +++++++-- mongoengine/document.py | 17 +++++++++++++---- mongoengine/errors.py | 1 - mongoengine/fields.py | 13 ++++++++----- mongoengine/mongodb_support.py | 1 - mongoengine/queryset/base.py | 6 ++---- mongoengine/queryset/manager.py | 1 + mongoengine/queryset/transform.py | 2 +- setup.cfg | 10 ++++++++++ setup.py | 2 +- tests/document/test_delta.py | 1 + tests/document/test_indexes.py | 7 +++++-- tests/document/test_instance.py | 10 +++++++--- tests/document/test_json_serialisation.py | 2 +- tests/fields/test_binary_field.py | 2 +- tests/fields/test_boolean_field.py | 2 +- tests/fields/test_complex_datetime_field.py | 1 - tests/fields/test_datetime_field.py | 1 - tests/fields/test_dict_field.py | 10 ++++++---- tests/fields/test_embedded_document_field.py | 1 - tests/fields/test_enum_field.py | 4 ++-- tests/fields/test_fields.py | 9 ++++++--- tests/fields/test_float_field.py | 1 - tests/fields/test_int_field.py | 1 - tests/fields/test_lazy_reference_field.py | 3 +-- tests/fields/test_long_field.py | 5 ++--- tests/fields/test_reference_field.py | 2 +- tests/fields/test_sequence_field.py | 1 - tests/fields/test_string_field.py | 2 +- tests/fields/test_uuid_field.py | 2 +- tests/queryset/test_geo.py | 1 - tests/queryset/test_modify.py | 8 +++++++- tests/queryset/test_queryset.py | 11 +++++++---- tests/queryset/test_transform.py | 2 +- tests/queryset/test_visitor.py | 2 +- tests/test_connection.py | 10 +++++----- tests/test_connection_mongomock.py | 8 +------- tests/test_datastructures.py | 6 +++++- tests/test_replicaset_connection.py | 1 - tests/utils.py | 1 - 46 files changed, 133 insertions(+), 89 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 066385a2..87c5e2f5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,10 +8,14 @@ repos: rev: 3.8.4 hooks: - id: flake8 - additional_dependencies: - - flake8-import-order +# additional_dependencies: +# - flake8-import-order - repo: https://github.com/asottile/pyupgrade rev: v2.7.4 hooks: - id: pyupgrade args: [--py36-plus] + - repo: https://github.com/pycqa/isort + rev: 5.6.3 + hooks: + - id: isort diff --git a/mongoengine/__init__.py b/mongoengine/__init__.py index bf38d8b0..075c8858 100644 --- a/mongoengine/__init__.py +++ b/mongoengine/__init__.py @@ -1,10 +1,12 @@ # Import submodules so that we can expose their __all__ -from mongoengine import connection -from mongoengine import document -from mongoengine import errors -from mongoengine import fields -from mongoengine import queryset -from mongoengine import signals +from mongoengine import ( + connection, + document, + errors, + fields, + queryset, + signals, +) # Import everything from each submodule so that it can be accessed via # mongoengine, e.g. instead of `from mongoengine.connection import connect`, @@ -17,7 +19,6 @@ from mongoengine.fields import * # noqa: F401 from mongoengine.queryset import * # noqa: F401 from mongoengine.signals import * # noqa: F401 - __all__ = ( list(document.__all__) + list(fields.__all__) diff --git a/mongoengine/base/document.py b/mongoengine/base/document.py index b76671ce..683f107f 100644 --- a/mongoengine/base/document.py +++ b/mongoengine/base/document.py @@ -1,10 +1,9 @@ import copy - import numbers from functools import partial -from bson import DBRef, ObjectId, SON, json_util import pymongo +from bson import DBRef, json_util, ObjectId, SON from mongoengine import signals from mongoengine.base.common import get_document diff --git a/mongoengine/base/fields.py b/mongoengine/base/fields.py index f1bc020c..c1dc486d 100644 --- a/mongoengine/base/fields.py +++ b/mongoengine/base/fields.py @@ -1,11 +1,15 @@ import operator import weakref -from bson import DBRef, ObjectId, SON import pymongo +from bson import DBRef, ObjectId, SON from mongoengine.base.common import UPDATE_OPERATORS -from mongoengine.base.datastructures import BaseDict, BaseList, EmbeddedDocumentList +from mongoengine.base.datastructures import ( + BaseDict, + BaseList, + EmbeddedDocumentList, +) from mongoengine.common import _import_class from mongoengine.errors import DeprecatedError, ValidationError diff --git a/mongoengine/base/metaclasses.py b/mongoengine/base/metaclasses.py index f3a6903d..072b3aad 100644 --- a/mongoengine/base/metaclasses.py +++ b/mongoengine/base/metaclasses.py @@ -2,7 +2,11 @@ import itertools import warnings from mongoengine.base.common import _document_registry -from mongoengine.base.fields import BaseField, ComplexBaseField, ObjectIdField +from mongoengine.base.fields import ( + BaseField, + ComplexBaseField, + ObjectIdField, +) from mongoengine.common import _import_class from mongoengine.errors import InvalidDocumentError from mongoengine.queryset import ( @@ -12,7 +16,6 @@ from mongoengine.queryset import ( QuerySetManager, ) - __all__ = ("DocumentMetaclass", "TopLevelDocumentMetaclass") diff --git a/mongoengine/connection.py b/mongoengine/connection.py index f181cf61..11cd9308 100644 --- a/mongoengine/connection.py +++ b/mongoengine/connection.py @@ -217,8 +217,8 @@ def register_connection( def disconnect(alias=DEFAULT_CONNECTION_NAME): """Close the connection with a given alias.""" - from mongoengine.base.common import _get_documents_by_db from mongoengine import Document + from mongoengine.base.common import _get_documents_by_db if alias in _connections: get_connection(alias=alias).close() diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index d63e24fd..1f0ce378 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -4,13 +4,18 @@ from mongoengine.base import ( BaseDict, BaseList, EmbeddedDocumentList, - TopLevelDocumentMetaclass, get_document, + TopLevelDocumentMetaclass, ) from mongoengine.base.datastructures import LazyReference from mongoengine.connection import get_db from mongoengine.document import Document, EmbeddedDocument -from mongoengine.fields import DictField, ListField, MapField, ReferenceField +from mongoengine.fields import ( + DictField, + ListField, + MapField, + ReferenceField, +) from mongoengine.queryset import QuerySet diff --git a/mongoengine/document.py b/mongoengine/document.py index 8cdce1d0..327cf291 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -1,7 +1,7 @@ import re -from bson.dbref import DBRef import pymongo +from bson.dbref import DBRef from pymongo.read_preferences import ReadPreference from mongoengine import signals @@ -11,19 +11,28 @@ from mongoengine.base import ( BaseList, DocumentMetaclass, EmbeddedDocumentList, - TopLevelDocumentMetaclass, get_document, + TopLevelDocumentMetaclass, ) from mongoengine.common import _import_class from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db -from mongoengine.context_managers import set_write_concern, switch_collection, switch_db +from mongoengine.context_managers import ( + set_write_concern, + switch_collection, + switch_db, +) from mongoengine.errors import ( InvalidDocumentError, InvalidQueryError, SaveConditionError, ) from mongoengine.pymongo_support import list_collection_names -from mongoengine.queryset import NotUniqueError, OperationError, QuerySet, transform +from mongoengine.queryset import ( + NotUniqueError, + OperationError, + QuerySet, + transform, +) __all__ = ( "Document", diff --git a/mongoengine/errors.py b/mongoengine/errors.py index 2b3d2014..f6b426d1 100644 --- a/mongoengine/errors.py +++ b/mongoengine/errors.py @@ -1,6 +1,5 @@ from collections import defaultdict - __all__ = ( "NotRegistered", "InvalidDocumentError", diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 276b02ce..db252c9e 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -9,10 +9,10 @@ import uuid from io import BytesIO from operator import itemgetter -from bson import Binary, DBRef, ObjectId, SON -from bson.int64 import Int64 import gridfs import pymongo +from bson import Binary, DBRef, ObjectId, SON +from bson.int64 import Int64 from pymongo import ReturnDocument try: @@ -22,21 +22,24 @@ except ImportError: else: import dateutil.parser - from mongoengine.base import ( BaseDocument, BaseField, ComplexBaseField, GeoJsonBaseField, + get_document, LazyReference, ObjectIdField, - get_document, ) from mongoengine.base.utils import LazyRegexCompiler from mongoengine.common import _import_class from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db from mongoengine.document import Document, EmbeddedDocument -from mongoengine.errors import DoesNotExist, InvalidQueryError, ValidationError +from mongoengine.errors import ( + DoesNotExist, + InvalidQueryError, + ValidationError, +) from mongoengine.queryset import DO_NOTHING from mongoengine.queryset.base import BaseQuerySet from mongoengine.queryset.transform import STRING_OPERATORS diff --git a/mongoengine/mongodb_support.py b/mongoengine/mongodb_support.py index 8c5b3e5d..00b87f41 100644 --- a/mongoengine/mongodb_support.py +++ b/mongoengine/mongodb_support.py @@ -3,7 +3,6 @@ Helper functions, constants, and types to aid with MongoDB version support """ from mongoengine.connection import get_connection - # Constant that can be used to compare the version retrieved with # get_mongodb_version() MONGODB_34 = (3, 4) diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 47a5f733..6d86f1ed 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -2,13 +2,12 @@ import copy import itertools import re import warnings - from collections.abc import Mapping -from bson import SON, json_util -from bson.code import Code import pymongo import pymongo.errors +from bson import json_util, SON +from bson.code import Code from pymongo.collection import ReturnDocument from pymongo.common import validate_read_preference from pymongo.read_concern import ReadConcern @@ -34,7 +33,6 @@ from mongoengine.queryset import transform from mongoengine.queryset.field_list import QueryFieldList from mongoengine.queryset.visitor import Q, QNode - __all__ = ("BaseQuerySet", "DO_NOTHING", "NULLIFY", "CASCADE", "DENY", "PULL") # Delete rules diff --git a/mongoengine/queryset/manager.py b/mongoengine/queryset/manager.py index 699526fd..46f137a2 100644 --- a/mongoengine/queryset/manager.py +++ b/mongoengine/queryset/manager.py @@ -1,4 +1,5 @@ from functools import partial + from mongoengine.queryset.queryset import QuerySet __all__ = ("queryset_manager", "QuerySetManager") diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index 3f1db8fa..9dd535e3 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -1,8 +1,8 @@ from collections import defaultdict +import pymongo from bson import ObjectId, SON from bson.dbref import DBRef -import pymongo from mongoengine.base import UPDATE_OPERATORS from mongoengine.common import _import_class diff --git a/setup.cfg b/setup.cfg index 216e3dfe..ab993d76 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,3 +8,13 @@ application-import-names=mongoengine,tests # Limits the discovery to tests directory # avoids that it runs for instance the benchmark testpaths = tests + +[isort] +known_first_party = mongoengine,tests +default_section = THIRDPARTY +multi_line_output = 3 +include_trailing_comma = True +combine_as_imports = True +line_length = 70 +ensure_newline_before_comments = 1 +order_by_type = 0 \ No newline at end of file diff --git a/setup.py b/setup.py index 37b95e37..27ed987e 100644 --- a/setup.py +++ b/setup.py @@ -53,8 +53,8 @@ class PyTest(TestCommand): def run_tests(self): # import here, cause outside the eggs aren't loaded - from pkg_resources import _namespace_packages import pytest + from pkg_resources import _namespace_packages # Purge modules under test from sys.modules. The test loader will # re-import them from the build location. Required when 2to3 is used diff --git a/tests/document/test_delta.py b/tests/document/test_delta.py index 817bc40e..68c698b6 100644 --- a/tests/document/test_delta.py +++ b/tests/document/test_delta.py @@ -1,6 +1,7 @@ import unittest from bson import SON + from mongoengine import * from mongoengine.pymongo_support import list_collection_names from tests.utils import MongoDBTestCase diff --git a/tests/document/test_indexes.py b/tests/document/test_indexes.py index 2de9307d..94923145 100644 --- a/tests/document/test_indexes.py +++ b/tests/document/test_indexes.py @@ -1,13 +1,16 @@ import unittest from datetime import datetime +import pytest from pymongo.collation import Collation from pymongo.errors import OperationFailure -import pytest from mongoengine import * from mongoengine.connection import get_db -from mongoengine.mongodb_support import MONGODB_42, get_mongodb_version +from mongoengine.mongodb_support import ( + get_mongodb_version, + MONGODB_42, +) class TestIndexes(unittest.TestCase): diff --git a/tests/document/test_instance.py b/tests/document/test_instance.py index 78a550ce..42eb3330 100644 --- a/tests/document/test_instance.py +++ b/tests/document/test_instance.py @@ -6,9 +6,9 @@ import weakref from datetime import datetime import bson +import pytest from bson import DBRef, ObjectId from pymongo.errors import DuplicateKeyError -import pytest from mongoengine import * from mongoengine import signals @@ -23,7 +23,11 @@ from mongoengine.errors import ( NotUniqueError, SaveConditionError, ) -from mongoengine.mongodb_support import MONGODB_34, MONGODB_36, get_mongodb_version +from mongoengine.mongodb_support import ( + get_mongodb_version, + MONGODB_34, + MONGODB_36, +) from mongoengine.pymongo_support import list_collection_names from mongoengine.queryset import NULLIFY, Q from tests import fixtures @@ -34,7 +38,7 @@ from tests.fixtures import ( PickleSignalsTest, PickleTest, ) -from tests.utils import MongoDBTestCase, get_as_pymongo +from tests.utils import get_as_pymongo, MongoDBTestCase TEST_IMAGE_PATH = os.path.join(os.path.dirname(__file__), "../fields/mongoengine.png") diff --git a/tests/document/test_json_serialisation.py b/tests/document/test_json_serialisation.py index 593d34f8..61298ab1 100644 --- a/tests/document/test_json_serialisation.py +++ b/tests/document/test_json_serialisation.py @@ -1,7 +1,7 @@ import unittest import uuid - from datetime import datetime + from bson import ObjectId from mongoengine import * diff --git a/tests/fields/test_binary_field.py b/tests/fields/test_binary_field.py index 8dfcdb54..e7bdfa2c 100644 --- a/tests/fields/test_binary_field.py +++ b/tests/fields/test_binary_field.py @@ -1,7 +1,7 @@ import uuid -from bson import Binary import pytest +from bson import Binary from mongoengine import * from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_boolean_field.py b/tests/fields/test_boolean_field.py index d82d149f..b2c87695 100644 --- a/tests/fields/test_boolean_field.py +++ b/tests/fields/test_boolean_field.py @@ -1,7 +1,7 @@ import pytest from mongoengine import * -from tests.utils import MongoDBTestCase, get_as_pymongo +from tests.utils import get_as_pymongo, MongoDBTestCase class TestBooleanField(MongoDBTestCase): diff --git a/tests/fields/test_complex_datetime_field.py b/tests/fields/test_complex_datetime_field.py index aa1624d1..82f332f6 100644 --- a/tests/fields/test_complex_datetime_field.py +++ b/tests/fields/test_complex_datetime_field.py @@ -6,7 +6,6 @@ import re import pytest from mongoengine import * - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_datetime_field.py b/tests/fields/test_datetime_field.py index 0858548c..088e54a4 100644 --- a/tests/fields/test_datetime_field.py +++ b/tests/fields/test_datetime_field.py @@ -9,7 +9,6 @@ except ImportError: from mongoengine import * from mongoengine import connection - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_dict_field.py b/tests/fields/test_dict_field.py index 05482107..5a6544c2 100644 --- a/tests/fields/test_dict_field.py +++ b/tests/fields/test_dict_field.py @@ -1,11 +1,13 @@ -from bson import InvalidDocument import pytest +from bson import InvalidDocument from mongoengine import * from mongoengine.base import BaseDict -from mongoengine.mongodb_support import MONGODB_36, get_mongodb_version - -from tests.utils import MongoDBTestCase, get_as_pymongo +from mongoengine.mongodb_support import ( + get_mongodb_version, + MONGODB_36, +) +from tests.utils import get_as_pymongo, MongoDBTestCase class TestDictField(MongoDBTestCase): diff --git a/tests/fields/test_embedded_document_field.py b/tests/fields/test_embedded_document_field.py index 480bec20..0e9784ff 100644 --- a/tests/fields/test_embedded_document_field.py +++ b/tests/fields/test_embedded_document_field.py @@ -12,7 +12,6 @@ from mongoengine import ( StringField, ValidationError, ) - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_enum_field.py b/tests/fields/test_enum_field.py index c101996c..0a95f934 100644 --- a/tests/fields/test_enum_field.py +++ b/tests/fields/test_enum_field.py @@ -1,10 +1,10 @@ from enum import Enum -from bson import InvalidDocument import pytest +from bson import InvalidDocument from mongoengine import Document, EnumField, ValidationError -from tests.utils import MongoDBTestCase, get_as_pymongo +from tests.utils import get_as_pymongo, MongoDBTestCase class Status(Enum): diff --git a/tests/fields/test_fields.py b/tests/fields/test_fields.py index ab3ee0c8..a4d94afa 100644 --- a/tests/fields/test_fields.py +++ b/tests/fields/test_fields.py @@ -1,8 +1,8 @@ import datetime import unittest -from bson import DBRef, ObjectId, SON import pytest +from bson import DBRef, ObjectId, SON from mongoengine import ( BooleanField, @@ -34,9 +34,12 @@ from mongoengine import ( StringField, ValidationError, ) -from mongoengine.base import BaseField, EmbeddedDocumentList, _document_registry +from mongoengine.base import ( + _document_registry, + BaseField, + EmbeddedDocumentList, +) from mongoengine.errors import DeprecatedError - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_float_field.py b/tests/fields/test_float_field.py index 913f009d..30f829ae 100644 --- a/tests/fields/test_float_field.py +++ b/tests/fields/test_float_field.py @@ -1,7 +1,6 @@ import pytest from mongoengine import * - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_int_field.py b/tests/fields/test_int_field.py index 1f50b832..549356c0 100644 --- a/tests/fields/test_int_field.py +++ b/tests/fields/test_int_field.py @@ -1,7 +1,6 @@ import pytest from mongoengine import * - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_lazy_reference_field.py b/tests/fields/test_lazy_reference_field.py index 2b02668c..958e3242 100644 --- a/tests/fields/test_lazy_reference_field.py +++ b/tests/fields/test_lazy_reference_field.py @@ -1,10 +1,9 @@ -from bson import DBRef, ObjectId import pytest +from bson import DBRef, ObjectId from mongoengine import * from mongoengine.base import LazyReference from mongoengine.context_managers import query_counter - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_long_field.py b/tests/fields/test_long_field.py index 4a3041f2..efc0a3ca 100644 --- a/tests/fields/test_long_field.py +++ b/tests/fields/test_long_field.py @@ -1,10 +1,9 @@ -from bson.int64 import Int64 import pytest +from bson.int64 import Int64 from mongoengine import * from mongoengine.connection import get_db - -from tests.utils import MongoDBTestCase, get_as_pymongo +from tests.utils import get_as_pymongo, MongoDBTestCase class TestLongField(MongoDBTestCase): diff --git a/tests/fields/test_reference_field.py b/tests/fields/test_reference_field.py index 275e3fe1..08a56979 100644 --- a/tests/fields/test_reference_field.py +++ b/tests/fields/test_reference_field.py @@ -1,5 +1,5 @@ -from bson import DBRef, SON import pytest +from bson import DBRef, SON from mongoengine import * from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_sequence_field.py b/tests/fields/test_sequence_field.py index c3ecbeec..6883b2a7 100644 --- a/tests/fields/test_sequence_field.py +++ b/tests/fields/test_sequence_field.py @@ -1,5 +1,4 @@ from mongoengine import * - from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_string_field.py b/tests/fields/test_string_field.py index 6e1d77f2..289b049c 100644 --- a/tests/fields/test_string_field.py +++ b/tests/fields/test_string_field.py @@ -1,7 +1,7 @@ import pytest from mongoengine import * -from tests.utils import MongoDBTestCase, get_as_pymongo +from tests.utils import get_as_pymongo, MongoDBTestCase class TestStringField(MongoDBTestCase): diff --git a/tests/fields/test_uuid_field.py b/tests/fields/test_uuid_field.py index ec81033b..e26e14f7 100644 --- a/tests/fields/test_uuid_field.py +++ b/tests/fields/test_uuid_field.py @@ -3,7 +3,7 @@ import uuid import pytest from mongoengine import * -from tests.utils import MongoDBTestCase, get_as_pymongo +from tests.utils import get_as_pymongo, MongoDBTestCase class Person(Document): diff --git a/tests/queryset/test_geo.py b/tests/queryset/test_geo.py index 81ade092..0fe3af97 100644 --- a/tests/queryset/test_geo.py +++ b/tests/queryset/test_geo.py @@ -2,7 +2,6 @@ import datetime import unittest from mongoengine import * - from tests.utils import MongoDBTestCase diff --git a/tests/queryset/test_modify.py b/tests/queryset/test_modify.py index 556e6d9e..304322af 100644 --- a/tests/queryset/test_modify.py +++ b/tests/queryset/test_modify.py @@ -1,6 +1,12 @@ import unittest -from mongoengine import Document, IntField, ListField, StringField, connect +from mongoengine import ( + connect, + Document, + IntField, + ListField, + StringField, +) class Doc(Document): diff --git a/tests/queryset/test_queryset.py b/tests/queryset/test_queryset.py index 01e6b568..95b8e03c 100644 --- a/tests/queryset/test_queryset.py +++ b/tests/queryset/test_queryset.py @@ -3,23 +3,26 @@ import unittest import uuid from decimal import Decimal -from bson import DBRef, ObjectId import pymongo +import pytest +from bson import DBRef, ObjectId from pymongo.read_preferences import ReadPreference from pymongo.results import UpdateResult -import pytest from mongoengine import * from mongoengine.connection import get_db from mongoengine.context_managers import query_counter, switch_db from mongoengine.errors import InvalidQueryError -from mongoengine.mongodb_support import MONGODB_36, get_mongodb_version +from mongoengine.mongodb_support import ( + get_mongodb_version, + MONGODB_36, +) from mongoengine.queryset import ( DoesNotExist, MultipleObjectsReturned, QuerySet, - QuerySetManager, queryset_manager, + QuerySetManager, ) from tests.utils import ( requires_mongodb_gte_44, diff --git a/tests/queryset/test_transform.py b/tests/queryset/test_transform.py index 62e95dd6..9a7d6365 100644 --- a/tests/queryset/test_transform.py +++ b/tests/queryset/test_transform.py @@ -1,7 +1,7 @@ import unittest -from bson.son import SON import pytest +from bson.son import SON from mongoengine import * from mongoengine.queryset import Q, transform diff --git a/tests/queryset/test_visitor.py b/tests/queryset/test_visitor.py index 5fb94901..04c7140a 100644 --- a/tests/queryset/test_visitor.py +++ b/tests/queryset/test_visitor.py @@ -2,8 +2,8 @@ import datetime import re import unittest -from bson import ObjectId import pytest +from bson import ObjectId from mongoengine import * from mongoengine.errors import InvalidQueryError diff --git a/tests/test_connection.py b/tests/test_connection.py index 7ffa98f3..e036953b 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,20 +1,20 @@ import datetime import unittest -from bson.tz_util import utc import pymongo +import pytest +from bson.tz_util import utc from pymongo import MongoClient, ReadPreference from pymongo.errors import InvalidName, OperationFailure -import pytest import mongoengine.connection from mongoengine import ( - DateTimeField, - Document, - StringField, connect, + DateTimeField, disconnect_all, + Document, register_connection, + StringField, ) from mongoengine.connection import ( ConnectionFailure, diff --git a/tests/test_connection_mongomock.py b/tests/test_connection_mongomock.py index a35dc551..4b76fe0c 100644 --- a/tests/test_connection_mongomock.py +++ b/tests/test_connection_mongomock.py @@ -3,15 +3,9 @@ import unittest import pytest import mongoengine.connection -from mongoengine import ( - Document, - StringField, - connect, - disconnect_all, -) +from mongoengine import connect, disconnect_all, Document, StringField from mongoengine.connection import get_connection - try: import mongomock diff --git a/tests/test_datastructures.py b/tests/test_datastructures.py index 931a1f6e..42ce42a1 100644 --- a/tests/test_datastructures.py +++ b/tests/test_datastructures.py @@ -3,7 +3,11 @@ import unittest import pytest from mongoengine import Document -from mongoengine.base.datastructures import BaseDict, BaseList, StrictDict +from mongoengine.base.datastructures import ( + BaseDict, + BaseList, + StrictDict, +) class DocumentStub: diff --git a/tests/test_replicaset_connection.py b/tests/test_replicaset_connection.py index 1fdfcb20..3863a198 100644 --- a/tests/test_replicaset_connection.py +++ b/tests/test_replicaset_connection.py @@ -5,7 +5,6 @@ from pymongo import MongoClient, ReadPreference import mongoengine from mongoengine.connection import ConnectionFailure - CONN_CLASS = MongoClient READ_PREF = ReadPreference.SECONDARY diff --git a/tests/utils.py b/tests/utils.py index 52f56980..a05b9c14 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -7,7 +7,6 @@ from mongoengine import connect from mongoengine.connection import disconnect_all, get_db from mongoengine.mongodb_support import get_mongodb_version - MONGO_TEST_DB = "mongoenginetest" # standard name for the test database From e5a2714baf3e9eea200b909923efecdbdc22800d Mon Sep 17 00:00:00 2001 From: Bastien Gerard Date: Mon, 29 Mar 2021 21:55:34 +0200 Subject: [PATCH 2/4] update doc for isort --- .pre-commit-config.yaml | 2 -- CONTRIBUTING.rst | 8 ++++++-- requirements-dev.txt | 1 - setup.cfg | 1 - 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 87c5e2f5..c34aaafe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,8 +8,6 @@ repos: rev: 3.8.4 hooks: - id: flake8 -# additional_dependencies: -# - flake8-import-order - repo: https://github.com/asottile/pyupgrade rev: v2.7.4 hooks: diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 035ae07a..fb183887 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -35,8 +35,8 @@ Travis runs the tests against the main Python 3.x versions. Style Guide ----------- -MongoEngine's codebase is formatted with `black `_, other tools like -flake8 are also used. Those tools will run as part of the CI and will fail in case the code is not formatted properly. +MongoEngine's codebase is auto-formatted with `black `_, imports are ordered with `isort `_ +and other tools like flake8 are also used. Those tools will run as part of the CI and will fail in case the code is not formatted properly. To install all development tools, simply run the following commands: @@ -58,6 +58,10 @@ To enable ``pre-commit`` simply run: See the ``.pre-commit-config.yaml`` configuration file for more information on how it works. +pre-commit will now run upon every commit and will reject anything that doesn't comply. + +You can also run all the checks with ``pre-commit run -a``, this is what is used in the CI. + Testing ------- diff --git a/requirements-dev.txt b/requirements-dev.txt index ee788e7a..f9d0595f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,6 +1,5 @@ black flake8 -flake8-import-order pre-commit pytest ipdb diff --git a/setup.cfg b/setup.cfg index ab993d76..04c965f7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,7 +2,6 @@ ignore=E501,F403,F405,I201,I202,W504,W605,W503,B007 exclude=build,dist,docs,venv,venv3,.tox,.eggs,tests max-complexity=47 -application-import-names=mongoengine,tests [tool:pytest] # Limits the discovery to tests directory From b9d370c885c3fff6029ae30728f5eea4bdd3949a Mon Sep 17 00:00:00 2001 From: Bastien Gerard Date: Mon, 29 Mar 2021 22:02:57 +0200 Subject: [PATCH 3/4] add standard hooks --- .github/workflows/github-actions.yml | 2 +- .pre-commit-config.yaml | 7 +++++++ docs/guide/validation.rst | 1 - mongoengine/base/document.py | 2 +- mongoengine/base/fields.py | 2 +- mongoengine/dereference.py | 4 ++-- mongoengine/document.py | 2 +- mongoengine/fields.py | 4 ++-- mongoengine/queryset/base.py | 2 +- mongoengine/queryset/queryset.py | 2 +- mongoengine/queryset/transform.py | 2 +- setup.cfg | 1 - tests/document/test_indexes.py | 2 +- tests/document/test_instance.py | 4 ++-- tests/fields/test_boolean_field.py | 2 +- tests/fields/test_dict_field.py | 4 ++-- tests/fields/test_enum_field.py | 2 +- tests/fields/test_fields.py | 4 ++-- tests/fields/test_long_field.py | 2 +- tests/fields/test_reference_field.py | 2 +- tests/fields/test_string_field.py | 2 +- tests/fields/test_uuid_field.py | 2 +- tests/queryset/test_modify.py | 2 +- tests/queryset/test_queryset.py | 4 ++-- tests/test_connection.py | 8 ++++---- tests/test_connection_mongomock.py | 2 +- 26 files changed, 39 insertions(+), 34 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index bfdfa3a4..b6820a33 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -140,4 +140,4 @@ jobs: - name: publish pypi uses: pypa/gh-action-pypi-publish@master with: - password: ${{ secrets.pypi_token }} \ No newline at end of file + password: ${{ secrets.pypi_token }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c34aaafe..f66db93b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,12 @@ fail_fast: false repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.3.0 + hooks: + - id: check-merge-conflict + - id: debug-statements + - id: trailing-whitespace + - id: end-of-file-fixer - repo: https://github.com/ambv/black rev: 20.8b1 hooks: diff --git a/docs/guide/validation.rst b/docs/guide/validation.rst index 971f6eb5..e5b9ed66 100644 --- a/docs/guide/validation.rst +++ b/docs/guide/validation.rst @@ -120,4 +120,3 @@ the validation and cleaning of a document when you call :meth:`~mongoengine.docu Person(age=1000).save(validate=False) person = Person.objects.first() assert person.age == 1000 - diff --git a/mongoengine/base/document.py b/mongoengine/base/document.py index 683f107f..46935c1b 100644 --- a/mongoengine/base/document.py +++ b/mongoengine/base/document.py @@ -3,7 +3,7 @@ import numbers from functools import partial import pymongo -from bson import DBRef, json_util, ObjectId, SON +from bson import SON, DBRef, ObjectId, json_util from mongoengine import signals from mongoengine.base.common import get_document diff --git a/mongoengine/base/fields.py b/mongoengine/base/fields.py index c1dc486d..a6803527 100644 --- a/mongoengine/base/fields.py +++ b/mongoengine/base/fields.py @@ -2,7 +2,7 @@ import operator import weakref import pymongo -from bson import DBRef, ObjectId, SON +from bson import SON, DBRef, ObjectId from mongoengine.base.common import UPDATE_OPERATORS from mongoengine.base.datastructures import ( diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index 1f0ce378..f388fe06 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -1,11 +1,11 @@ -from bson import DBRef, SON +from bson import SON, DBRef from mongoengine.base import ( BaseDict, BaseList, EmbeddedDocumentList, - get_document, TopLevelDocumentMetaclass, + get_document, ) from mongoengine.base.datastructures import LazyReference from mongoengine.connection import get_db diff --git a/mongoengine/document.py b/mongoengine/document.py index 327cf291..a7b4cf95 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -11,8 +11,8 @@ from mongoengine.base import ( BaseList, DocumentMetaclass, EmbeddedDocumentList, - get_document, TopLevelDocumentMetaclass, + get_document, ) from mongoengine.common import _import_class from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db diff --git a/mongoengine/fields.py b/mongoengine/fields.py index db252c9e..a3e483a4 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -11,7 +11,7 @@ from operator import itemgetter import gridfs import pymongo -from bson import Binary, DBRef, ObjectId, SON +from bson import SON, Binary, DBRef, ObjectId from bson.int64 import Int64 from pymongo import ReturnDocument @@ -27,9 +27,9 @@ from mongoengine.base import ( BaseField, ComplexBaseField, GeoJsonBaseField, - get_document, LazyReference, ObjectIdField, + get_document, ) from mongoengine.base.utils import LazyRegexCompiler from mongoengine.common import _import_class diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 6d86f1ed..5dc47e00 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -6,7 +6,7 @@ from collections.abc import Mapping import pymongo import pymongo.errors -from bson import json_util, SON +from bson import SON, json_util from bson.code import Code from pymongo.collection import ReturnDocument from pymongo.common import validate_read_preference diff --git a/mongoengine/queryset/queryset.py b/mongoengine/queryset/queryset.py index 49f2724c..b7c70bc0 100644 --- a/mongoengine/queryset/queryset.py +++ b/mongoengine/queryset/queryset.py @@ -1,11 +1,11 @@ from mongoengine.errors import OperationError from mongoengine.queryset.base import ( - BaseQuerySet, CASCADE, DENY, DO_NOTHING, NULLIFY, PULL, + BaseQuerySet, ) __all__ = ( diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index 9dd535e3..4c3d051b 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -1,7 +1,7 @@ from collections import defaultdict import pymongo -from bson import ObjectId, SON +from bson import SON, ObjectId from bson.dbref import DBRef from mongoengine.base import UPDATE_OPERATORS diff --git a/setup.cfg b/setup.cfg index 04c965f7..aa965c8f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -16,4 +16,3 @@ include_trailing_comma = True combine_as_imports = True line_length = 70 ensure_newline_before_comments = 1 -order_by_type = 0 \ No newline at end of file diff --git a/tests/document/test_indexes.py b/tests/document/test_indexes.py index 94923145..e308d12a 100644 --- a/tests/document/test_indexes.py +++ b/tests/document/test_indexes.py @@ -8,8 +8,8 @@ from pymongo.errors import OperationFailure from mongoengine import * from mongoengine.connection import get_db from mongoengine.mongodb_support import ( - get_mongodb_version, MONGODB_42, + get_mongodb_version, ) diff --git a/tests/document/test_instance.py b/tests/document/test_instance.py index 42eb3330..21f2c82e 100644 --- a/tests/document/test_instance.py +++ b/tests/document/test_instance.py @@ -24,9 +24,9 @@ from mongoengine.errors import ( SaveConditionError, ) from mongoengine.mongodb_support import ( - get_mongodb_version, MONGODB_34, MONGODB_36, + get_mongodb_version, ) from mongoengine.pymongo_support import list_collection_names from mongoengine.queryset import NULLIFY, Q @@ -38,7 +38,7 @@ from tests.fixtures import ( PickleSignalsTest, PickleTest, ) -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo TEST_IMAGE_PATH = os.path.join(os.path.dirname(__file__), "../fields/mongoengine.png") diff --git a/tests/fields/test_boolean_field.py b/tests/fields/test_boolean_field.py index b2c87695..d82d149f 100644 --- a/tests/fields/test_boolean_field.py +++ b/tests/fields/test_boolean_field.py @@ -1,7 +1,7 @@ import pytest from mongoengine import * -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo class TestBooleanField(MongoDBTestCase): diff --git a/tests/fields/test_dict_field.py b/tests/fields/test_dict_field.py index 5a6544c2..63d5c527 100644 --- a/tests/fields/test_dict_field.py +++ b/tests/fields/test_dict_field.py @@ -4,10 +4,10 @@ from bson import InvalidDocument from mongoengine import * from mongoengine.base import BaseDict from mongoengine.mongodb_support import ( - get_mongodb_version, MONGODB_36, + get_mongodb_version, ) -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo class TestDictField(MongoDBTestCase): diff --git a/tests/fields/test_enum_field.py b/tests/fields/test_enum_field.py index 0a95f934..7dfcffef 100644 --- a/tests/fields/test_enum_field.py +++ b/tests/fields/test_enum_field.py @@ -4,7 +4,7 @@ import pytest from bson import InvalidDocument from mongoengine import Document, EnumField, ValidationError -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo class Status(Enum): diff --git a/tests/fields/test_fields.py b/tests/fields/test_fields.py index a4d94afa..69fe1471 100644 --- a/tests/fields/test_fields.py +++ b/tests/fields/test_fields.py @@ -2,7 +2,7 @@ import datetime import unittest import pytest -from bson import DBRef, ObjectId, SON +from bson import SON, DBRef, ObjectId from mongoengine import ( BooleanField, @@ -35,9 +35,9 @@ from mongoengine import ( ValidationError, ) from mongoengine.base import ( - _document_registry, BaseField, EmbeddedDocumentList, + _document_registry, ) from mongoengine.errors import DeprecatedError from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_long_field.py b/tests/fields/test_long_field.py index efc0a3ca..5b73102f 100644 --- a/tests/fields/test_long_field.py +++ b/tests/fields/test_long_field.py @@ -3,7 +3,7 @@ from bson.int64 import Int64 from mongoengine import * from mongoengine.connection import get_db -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo class TestLongField(MongoDBTestCase): diff --git a/tests/fields/test_reference_field.py b/tests/fields/test_reference_field.py index 08a56979..afbf5004 100644 --- a/tests/fields/test_reference_field.py +++ b/tests/fields/test_reference_field.py @@ -1,5 +1,5 @@ import pytest -from bson import DBRef, SON +from bson import SON, DBRef from mongoengine import * from tests.utils import MongoDBTestCase diff --git a/tests/fields/test_string_field.py b/tests/fields/test_string_field.py index 289b049c..6e1d77f2 100644 --- a/tests/fields/test_string_field.py +++ b/tests/fields/test_string_field.py @@ -1,7 +1,7 @@ import pytest from mongoengine import * -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo class TestStringField(MongoDBTestCase): diff --git a/tests/fields/test_uuid_field.py b/tests/fields/test_uuid_field.py index e26e14f7..ec81033b 100644 --- a/tests/fields/test_uuid_field.py +++ b/tests/fields/test_uuid_field.py @@ -3,7 +3,7 @@ import uuid import pytest from mongoengine import * -from tests.utils import get_as_pymongo, MongoDBTestCase +from tests.utils import MongoDBTestCase, get_as_pymongo class Person(Document): diff --git a/tests/queryset/test_modify.py b/tests/queryset/test_modify.py index 304322af..15e3af34 100644 --- a/tests/queryset/test_modify.py +++ b/tests/queryset/test_modify.py @@ -1,11 +1,11 @@ import unittest from mongoengine import ( - connect, Document, IntField, ListField, StringField, + connect, ) diff --git a/tests/queryset/test_queryset.py b/tests/queryset/test_queryset.py index 95b8e03c..1aa4f32a 100644 --- a/tests/queryset/test_queryset.py +++ b/tests/queryset/test_queryset.py @@ -14,15 +14,15 @@ from mongoengine.connection import get_db from mongoengine.context_managers import query_counter, switch_db from mongoengine.errors import InvalidQueryError from mongoengine.mongodb_support import ( - get_mongodb_version, MONGODB_36, + get_mongodb_version, ) from mongoengine.queryset import ( DoesNotExist, MultipleObjectsReturned, QuerySet, - queryset_manager, QuerySetManager, + queryset_manager, ) from tests.utils import ( requires_mongodb_gte_44, diff --git a/tests/test_connection.py b/tests/test_connection.py index e036953b..2b7d46a7 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -9,16 +9,16 @@ from pymongo.errors import InvalidName, OperationFailure import mongoengine.connection from mongoengine import ( - connect, DateTimeField, - disconnect_all, Document, - register_connection, StringField, + connect, + disconnect_all, + register_connection, ) from mongoengine.connection import ( - ConnectionFailure, DEFAULT_DATABASE_NAME, + ConnectionFailure, disconnect, get_connection, get_db, diff --git a/tests/test_connection_mongomock.py b/tests/test_connection_mongomock.py index 4b76fe0c..6f9e2d26 100644 --- a/tests/test_connection_mongomock.py +++ b/tests/test_connection_mongomock.py @@ -3,7 +3,7 @@ import unittest import pytest import mongoengine.connection -from mongoengine import connect, disconnect_all, Document, StringField +from mongoengine import Document, StringField, connect, disconnect_all from mongoengine.connection import get_connection try: From 49a4d23371a64c1a250a846d2750d4f885df6ffe Mon Sep 17 00:00:00 2001 From: Bastien Gerard Date: Mon, 29 Mar 2021 22:04:07 +0200 Subject: [PATCH 4/4] update hooks version --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f66db93b..69d801a6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ fail_fast: false repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.3.0 + rev: v3.4.0 hooks: - id: check-merge-conflict - id: debug-statements @@ -12,15 +12,15 @@ repos: hooks: - id: black - repo: https://gitlab.com/pycqa/flake8 - rev: 3.8.4 + rev: 3.9.0 hooks: - id: flake8 - repo: https://github.com/asottile/pyupgrade - rev: v2.7.4 + rev: v2.11.0 hooks: - id: pyupgrade args: [--py36-plus] - repo: https://github.com/pycqa/isort - rev: 5.6.3 + rev: 5.8.0 hooks: - id: isort