From 60dc39c4fe038c73ec6c65efda263bdf2331a81d Mon Sep 17 00:00:00 2001 From: George Sakkis Date: Sun, 17 Sep 2023 01:58:36 +0300 Subject: [PATCH] Update precommit hooks & CI (#673) * Bump precommit hooks * Update github-actions-tests, replace lint/mypy workflows with precommit action * Move precommit hook runner to separate job * Sort imports via ruff * version: 1.22.6 --------- Co-authored-by: Roman --- .github/workflows/github-actions-lint.yml | 19 ----- .github/workflows/github-actions-mypy.yml | 17 ----- .github/workflows/github-actions-tests.yml | 16 ++++- .pre-commit-config.yaml | 7 +- beanie/__init__.py | 26 +++---- beanie/executors/migrate.py | 2 +- beanie/migrations/controllers/free_fall.py | 4 +- beanie/migrations/controllers/iterative.py | 9 ++- beanie/migrations/runner.py | 8 +-- beanie/odm/actions.py | 10 +-- beanie/odm/bulk.py | 13 ++-- beanie/odm/custom_types/bson/binary.py | 1 + beanie/odm/documents.py | 52 +++++++------- beanie/odm/fields.py | 28 ++++---- beanie/odm/interfaces/aggregate.py | 2 +- beanie/odm/interfaces/aggregation_methods.py | 2 +- beanie/odm/interfaces/find.py | 21 +++--- beanie/odm/interfaces/inheritance.py | 6 +- beanie/odm/interfaces/update.py | 4 +- beanie/odm/operators/__init__.py | 3 +- beanie/odm/queries/aggregation.py | 11 ++- beanie/odm/queries/cursor.py | 10 +-- beanie/odm/queries/delete.py | 6 +- beanie/odm/queries/find.py | 9 ++- beanie/odm/queries/update.py | 29 ++++---- beanie/odm/registry.py | 2 +- beanie/odm/settings/base.py | 7 +- beanie/odm/settings/document.py | 4 +- beanie/odm/settings/timeseries.py | 2 +- beanie/odm/settings/view.py | 2 +- beanie/odm/union_doc.py | 2 +- beanie/odm/utils/encoder.py | 16 +++-- beanie/odm/utils/init.py | 21 +++--- beanie/odm/utils/parsing.py | 7 +- beanie/odm/utils/projection.py | 2 +- beanie/odm/utils/pydantic.py | 2 +- beanie/odm/utils/relations.py | 3 +- beanie/odm/utils/self_validation.py | 2 +- beanie/odm/utils/state.py | 2 +- beanie/odm/utils/typing.py | 2 +- beanie/odm/views.py | 2 +- beanie/operators.py | 18 ++--- docs/changelog.md | 8 +++ pyproject.toml | 30 +------- tests/fastapi/app.py | 4 +- tests/fastapi/conftest.py | 2 +- tests/fastapi/models.py | 2 +- tests/fastapi/routes.py | 2 +- .../break/20210413211219_break.py | 2 +- tests/migrations/test_break.py | 2 +- tests/migrations/test_free_fall.py | 1 + tests/odm/conftest.py | 72 +++++++++---------- tests/odm/documents/test_create.py | 2 +- tests/odm/documents/test_inheritance.py | 8 +-- tests/odm/documents/test_init.py | 14 ++-- tests/odm/documents/test_pydantic_extras.py | 2 +- tests/odm/documents/test_revision.py | 2 +- tests/odm/documents/test_update.py | 5 +- tests/odm/models.py | 15 ++-- tests/odm/operators/find/test_array.py | 2 +- tests/odm/operators/find/test_comparison.py | 4 +- tests/odm/operators/find/test_logical.py | 2 +- tests/odm/operators/update/test_array.py | 2 +- tests/odm/operators/update/test_general.py | 10 +-- tests/odm/query/test_delete.py | 3 +- tests/odm/query/test_find.py | 4 +- tests/odm/query/test_update.py | 2 +- tests/odm/query/test_update_methods.py | 2 +- tests/odm/test_actions.py | 5 +- tests/odm/test_encoder.py | 8 +-- tests/odm/test_fields.py | 8 +-- tests/odm/test_id.py | 2 +- tests/odm/test_relations.py | 34 ++++----- tests/odm/test_root_models.py | 2 - tests/odm/test_state_management.py | 6 +- tests/odm/test_typing_utils.py | 2 +- tests/test_beanie.py | 2 +- tests/typing/aggregation.py | 4 +- tests/typing/find.py | 2 +- 79 files changed, 323 insertions(+), 367 deletions(-) delete mode 100644 .github/workflows/github-actions-lint.yml delete mode 100644 .github/workflows/github-actions-mypy.yml diff --git a/.github/workflows/github-actions-lint.yml b/.github/workflows/github-actions-lint.yml deleted file mode 100644 index f6a45c1a..00000000 --- a/.github/workflows/github-actions-lint.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Lint -on: [ pull_request ] - -jobs: - lint: - strategy: - fail-fast: false - matrix: - python-version: [ 3.10.9 ] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: ruff install - run: pip3 install ruff - - name: lint - run: ruff beanie/ tests/ \ No newline at end of file diff --git a/.github/workflows/github-actions-mypy.yml b/.github/workflows/github-actions-mypy.yml deleted file mode 100644 index 58bb73ec..00000000 --- a/.github/workflows/github-actions-mypy.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: MyPy -on: [ pull_request ] - -jobs: - mypy: - strategy: - fail-fast: false - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v2 - with: - python-version: 3.10.9 - - name: mypy install - run: pip3 install mypy types-click types-toml - - name: mypy - run: mypy beanie/ tests/typing --config-file pyproject.toml diff --git a/.github/workflows/github-actions-tests.yml b/.github/workflows/github-actions-tests.yml index b2e283b9..9b0c36fc 100644 --- a/.github/workflows/github-actions-tests.yml +++ b/.github/workflows/github-actions-tests.yml @@ -2,6 +2,14 @@ name: Tests on: [ pull_request ] jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: 3.11 + - uses: pre-commit/action@v3.0.0 run-tests: strategy: fail-fast: false @@ -12,11 +20,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + cache: pip + cache-dependency-path: pyproject.toml - name: Start MongoDB - uses: supercharge/mongodb-github-action@1.3.0 + uses: supercharge/mongodb-github-action@1.8.0 with: mongodb-version: ${{ matrix.mongodb-version }} mongodb-replica-set: test-rs @@ -25,4 +35,4 @@ jobs: - name: install pydantic run: pip install pydantic==${{ matrix.pydantic-version }} - name: run tests - run: pytest + run: pytest -v diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d4246841..2bd502e1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,16 +1,15 @@ repos: - repo: https://github.com/ambv/black - rev: 22.3.0 + rev: 23.7.0 hooks: - id: black language_version: python3.10 - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.220 + rev: v0.0.285 hooks: - id: ruff - args: [ "--force-exclude" ] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v0.910 + rev: v1.5.1 hooks: - id: mypy additional_dependencies: diff --git a/beanie/__init__.py b/beanie/__init__.py index c41e6b54..1b9ebc9f 100644 --- a/beanie/__init__.py +++ b/beanie/__init__.py @@ -1,37 +1,37 @@ from beanie.migrations.controllers.free_fall import free_fall_migration from beanie.migrations.controllers.iterative import iterative_migration from beanie.odm.actions import ( - before_event, - after_event, + After, + Before, + Delete, Insert, Replace, Save, SaveChanges, - ValidateOnSave, - Before, - After, - Delete, Update, + ValidateOnSave, + after_event, + before_event, ) from beanie.odm.bulk import BulkWriter from beanie.odm.custom_types import DecimalAnnotation from beanie.odm.custom_types.bson.binary import BsonBinary +from beanie.odm.documents import Document from beanie.odm.fields import ( - PydanticObjectId, + BackLink, + DeleteRules, Indexed, Link, - BackLink, + PydanticObjectId, WriteRules, - DeleteRules, ) from beanie.odm.queries.update import UpdateResponse -from beanie.odm.settings.timeseries import TimeSeriesConfig, Granularity +from beanie.odm.settings.timeseries import Granularity, TimeSeriesConfig +from beanie.odm.union_doc import UnionDoc from beanie.odm.utils.init import init_beanie -from beanie.odm.documents import Document from beanie.odm.views import View -from beanie.odm.union_doc import UnionDoc -__version__ = "1.22.5" +__version__ = "1.22.6" __all__ = [ # ODM "Document", diff --git a/beanie/executors/migrate.py b/beanie/executors/migrate.py index f103a048..b3c37509 100644 --- a/beanie/executors/migrate.py +++ b/beanie/executors/migrate.py @@ -11,7 +11,7 @@ from beanie.migrations import template from beanie.migrations.database import DBHandler -from beanie.migrations.models import RunningMode, RunningDirections +from beanie.migrations.models import RunningDirections, RunningMode from beanie.migrations.runner import MigrationNode logging.basicConfig(format="%(message)s", level=logging.INFO) diff --git a/beanie/migrations/controllers/free_fall.py b/beanie/migrations/controllers/free_fall.py index 89e0a0b9..24a26290 100644 --- a/beanie/migrations/controllers/free_fall.py +++ b/beanie/migrations/controllers/free_fall.py @@ -1,8 +1,8 @@ from inspect import signature -from typing import Type, List +from typing import List, Type -from beanie.odm.documents import Document from beanie.migrations.controllers.base import BaseMigrationController +from beanie.odm.documents import Document def free_fall_migration(document_models: List[Type[Document]]): diff --git a/beanie/migrations/controllers/iterative.py b/beanie/migrations/controllers/iterative.py index 8258d1cb..b4805773 100644 --- a/beanie/migrations/controllers/iterative.py +++ b/beanie/migrations/controllers/iterative.py @@ -1,11 +1,10 @@ -from inspect import signature, isclass -from typing import Type, Optional, Union, List +import asyncio +from inspect import isclass, signature +from typing import List, Optional, Type, Union -from beanie.migrations.utils import update_dict from beanie.migrations.controllers.base import BaseMigrationController +from beanie.migrations.utils import update_dict from beanie.odm.documents import Document -import asyncio - from beanie.odm.utils.pydantic import parse_model diff --git a/beanie/migrations/runner.py b/beanie/migrations/runner.py index 6cd2c2c7..ec0f5815 100644 --- a/beanie/migrations/runner.py +++ b/beanie/migrations/runner.py @@ -1,17 +1,17 @@ import logging from importlib.machinery import SourceFileLoader from pathlib import Path -from typing import Type, Optional +from typing import Optional, Type -from beanie.odm.documents import Document -from beanie.odm.utils.init import init_beanie from beanie.migrations.controllers.iterative import BaseMigrationController from beanie.migrations.database import DBHandler from beanie.migrations.models import ( MigrationLog, - RunningMode, RunningDirections, + RunningMode, ) +from beanie.odm.documents import Document +from beanie.odm.utils.init import init_beanie logger = logging.getLogger(__name__) diff --git a/beanie/odm/actions.py b/beanie/odm/actions.py index 4e8c1854..1b7eadaf 100644 --- a/beanie/odm/actions.py +++ b/beanie/odm/actions.py @@ -3,15 +3,15 @@ from enum import Enum from functools import wraps from typing import ( + TYPE_CHECKING, + Any, Callable, - List, - Union, Dict, - TYPE_CHECKING, - Type, + List, Optional, Tuple, - Any, + Type, + Union, ) if TYPE_CHECKING: diff --git a/beanie/odm/bulk.py b/beanie/odm/bulk.py index b7a7d7db..48ec020c 100644 --- a/beanie/odm/bulk.py +++ b/beanie/odm/bulk.py @@ -1,17 +1,18 @@ -from typing import Dict, Any, List, Optional, Union, Type, Mapping +from typing import Any, Dict, List, Mapping, Optional, Type, Union -from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 from pydantic import BaseModel, Field from pymongo import ( - InsertOne, - DeleteOne, DeleteMany, + DeleteOne, + InsertOne, ReplaceOne, - UpdateOne, UpdateMany, + UpdateOne, ) -from pymongo.results import BulkWriteResult from pymongo.client_session import ClientSession +from pymongo.results import BulkWriteResult + +from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 if IS_PYDANTIC_V2: from pydantic import ConfigDict diff --git a/beanie/odm/custom_types/bson/binary.py b/beanie/odm/custom_types/bson/binary.py index 3c9722c0..17b9e6df 100644 --- a/beanie/odm/custom_types/bson/binary.py +++ b/beanie/odm/custom_types/bson/binary.py @@ -1,6 +1,7 @@ from typing import Any, Callable import bson + from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 if IS_PYDANTIC_V2: diff --git a/beanie/odm/documents.py b/beanie/odm/documents.py index 872e4db9..d1383e8a 100644 --- a/beanie/odm/documents.py +++ b/beanie/odm/documents.py @@ -1,26 +1,28 @@ import asyncio -from typing import ClassVar, AbstractSet, Iterable from typing import ( + TYPE_CHECKING, + AbstractSet, + Any, + ClassVar, Dict, - Optional, + Iterable, List, - Type, - Union, Mapping, - TypeVar, - Any, + Optional, Set, + Type, + TypeVar, + Union, ) -from typing import TYPE_CHECKING from uuid import UUID, uuid4 from bson import DBRef, ObjectId from lazy_model import LazyModel from pydantic import ( - ValidationError, - PrivateAttr, - Field, ConfigDict, + Field, + PrivateAttr, + ValidationError, ) from pydantic.class_validators import root_validator from pydantic.main import BaseModel @@ -35,27 +37,27 @@ from beanie.exceptions import ( CollectionWasNotInitialized, DocumentNotFound, - RevisionIdWasChanged, DocumentWasNotSaved, NotSupported, ReplaceError, + RevisionIdWasChanged, ) from beanie.odm.actions import ( + ActionDirections, EventTypes, wrap_with_actions, - ActionDirections, ) from beanie.odm.bulk import BulkWriter, Operation from beanie.odm.cache import LRUCache from beanie.odm.fields import ( - PydanticObjectId, + BackLink, + DeleteRules, ExpressionField, Link, LinkInfo, LinkTypes, + PydanticObjectId, WriteRules, - DeleteRules, - BackLink, ) from beanie.odm.interfaces.aggregate import AggregateInterface from beanie.odm.interfaces.detector import ModelType @@ -64,36 +66,38 @@ from beanie.odm.interfaces.inheritance import InheritanceInterface from beanie.odm.interfaces.setters import SettersInterface from beanie.odm.models import ( + InspectionError, InspectionResult, InspectionStatuses, - InspectionError, ) from beanie.odm.operators.find.comparison import In from beanie.odm.operators.update.general import ( CurrentDate, Inc, - Set as SetOperator, - Unset, SetRevisionId, + Unset, +) +from beanie.odm.operators.update.general import ( + Set as SetOperator, ) from beanie.odm.queries.update import UpdateMany, UpdateResponse from beanie.odm.settings.document import DocumentSettings from beanie.odm.utils.dump import get_dict, get_top_level_nones from beanie.odm.utils.parsing import merge_models from beanie.odm.utils.pydantic import ( - parse_object_as, + IS_PYDANTIC_V2, + get_extra_field_info, get_field_type, + get_model_dump, get_model_fields, - get_extra_field_info, - IS_PYDANTIC_V2, parse_model, - get_model_dump, + parse_object_as, ) from beanie.odm.utils.self_validation import validate_self_before from beanie.odm.utils.state import ( - saved_state_needed, previous_saved_state_needed, save_state_after, + saved_state_needed, swap_revision_after, ) from beanie.odm.utils.typing import extract_id_class @@ -102,7 +106,7 @@ from pydantic import model_validator if TYPE_CHECKING: - from pydantic.typing import AbstractSetIntStr, MappingIntStrAny, DictStrAny + from pydantic.typing import AbstractSetIntStr, DictStrAny, MappingIntStrAny DocType = TypeVar("DocType", bound="Document") DocumentProjectionType = TypeVar("DocumentProjectionType", bound=BaseModel) diff --git a/beanie/odm/fields.py b/beanie/odm/fields.py index 0026add3..f20f8a89 100644 --- a/beanie/odm/fields.py +++ b/beanie/odm/fields.py @@ -3,15 +3,15 @@ from collections import OrderedDict from enum import Enum from typing import ( + TYPE_CHECKING, + Any, Dict, Generic, - TypeVar, - Union, - Type, List, Optional, - Any, - TYPE_CHECKING, + Type, + TypeVar, + Union, ) if sys.version_info >= (3, 8): @@ -21,31 +21,27 @@ from typing import OrderedDict as OrderedDictType -from bson import ObjectId, DBRef +from bson import DBRef, ObjectId from bson.errors import InvalidId from pydantic import BaseModel - -from pymongo import ASCENDING +from pymongo import ASCENDING, IndexModel from beanie.odm.enums import SortDirection from beanie.odm.operators.find.comparison import ( - Eq, GT, GTE, LT, LTE, NE, + Eq, In, ) -from beanie.odm.utils.parsing import parse_obj -from pymongo import IndexModel - from beanie.odm.registry import DocsRegistry - +from beanie.odm.utils.parsing import parse_obj from beanie.odm.utils.pydantic import ( IS_PYDANTIC_V2, - get_model_fields, get_field_type, + get_model_fields, parse_object_as, ) @@ -56,10 +52,10 @@ TypeAdapter, ) from pydantic.json_schema import JsonSchemaValue - from pydantic_core import core_schema, CoreSchema + from pydantic_core import CoreSchema, core_schema from pydantic_core.core_schema import ( - simple_ser_schema, ValidationInfo, + simple_ser_schema, str_schema, ) else: diff --git a/beanie/odm/interfaces/aggregate.py b/beanie/odm/interfaces/aggregate.py index 2f2861fe..57599c47 100644 --- a/beanie/odm/interfaces/aggregate.py +++ b/beanie/odm/interfaces/aggregate.py @@ -1,5 +1,5 @@ from abc import abstractmethod -from typing import TypeVar, Type, Optional, Union, Dict, Any, overload +from typing import Any, Dict, Optional, Type, TypeVar, Union, overload from pydantic import BaseModel from pymongo.client_session import ClientSession diff --git a/beanie/odm/interfaces/aggregation_methods.py b/beanie/odm/interfaces/aggregation_methods.py index 10f67b7f..5010eaf7 100644 --- a/beanie/odm/interfaces/aggregation_methods.py +++ b/beanie/odm/interfaces/aggregation_methods.py @@ -1,5 +1,5 @@ from abc import abstractmethod -from typing import Any, Optional, Union, List, Dict, cast +from typing import Any, Dict, List, Optional, Union, cast from pymongo.client_session import ClientSession diff --git a/beanie/odm/interfaces/find.py b/beanie/odm/interfaces/find.py index 38ceb9ef..3f9fc7b6 100644 --- a/beanie/odm/interfaces/find.py +++ b/beanie/odm/interfaces/find.py @@ -1,19 +1,20 @@ from abc import abstractmethod +from collections.abc import Iterable from typing import ( - Optional, + TYPE_CHECKING, + Any, + ClassVar, + Dict, List, + Mapping, + Optional, + Tuple, Type, + TypeVar, Union, - Tuple, - Mapping, - Any, overload, - ClassVar, - TypeVar, - Dict, - TYPE_CHECKING, ) -from collections.abc import Iterable + from pydantic import ( BaseModel, ) @@ -21,7 +22,7 @@ from beanie.odm.enums import SortDirection from beanie.odm.interfaces.detector import ModelType -from beanie.odm.queries.find import FindOne, FindMany +from beanie.odm.queries.find import FindMany, FindOne from beanie.odm.settings.base import ItemSettings if TYPE_CHECKING: diff --git a/beanie/odm/interfaces/inheritance.py b/beanie/odm/interfaces/inheritance.py index f7c425bf..60e4d672 100644 --- a/beanie/odm/interfaces/inheritance.py +++ b/beanie/odm/interfaces/inheritance.py @@ -1,8 +1,8 @@ from typing import ( - Type, - Optional, - Dict, ClassVar, + Dict, + Optional, + Type, ) diff --git a/beanie/odm/interfaces/update.py b/beanie/odm/interfaces/update.py index f86d8aab..1705e786 100644 --- a/beanie/odm/interfaces/update.py +++ b/beanie/odm/interfaces/update.py @@ -1,14 +1,14 @@ from abc import abstractmethod -from typing import Dict, Mapping, Union, Any, Optional +from typing import Any, Dict, Mapping, Optional, Union from pymongo.client_session import ClientSession from beanie.odm.bulk import BulkWriter from beanie.odm.fields import ExpressionField from beanie.odm.operators.update.general import ( - Set, CurrentDate, Inc, + Set, ) diff --git a/beanie/odm/operators/__init__.py b/beanie/odm/operators/__init__.py index 8a46e58e..dbaa898a 100644 --- a/beanie/odm/operators/__init__.py +++ b/beanie/odm/operators/__init__.py @@ -1,7 +1,8 @@ from abc import abstractmethod from collections.abc import Mapping from copy import copy, deepcopy -from typing import Any, Dict, Mapping as MappingType +from typing import Any, Dict +from typing import Mapping as MappingType class BaseOperator(Mapping): diff --git a/beanie/odm/queries/aggregation.py b/beanie/odm/queries/aggregation.py index 13dcc82e..165eac41 100644 --- a/beanie/odm/queries/aggregation.py +++ b/beanie/odm/queries/aggregation.py @@ -1,17 +1,16 @@ from typing import ( - Type, - List, - Mapping, - Optional, TYPE_CHECKING, Any, Generic, + List, + Mapping, + Optional, + Type, TypeVar, ) -from pydantic import BaseModel - from motor.core import AgnosticCommandCursor +from pydantic import BaseModel from beanie.odm.cache import LRUCache from beanie.odm.interfaces.clone import CloneInterface diff --git a/beanie/odm/queries/cursor.py b/beanie/odm/queries/cursor.py index 43d6b508..50bbe605 100644 --- a/beanie/odm/queries/cursor.py +++ b/beanie/odm/queries/cursor.py @@ -1,12 +1,12 @@ from abc import abstractmethod from typing import ( - Optional, - List, - TypeVar, - Type, - Dict, Any, + Dict, Generic, + List, + Optional, + Type, + TypeVar, cast, ) diff --git a/beanie/odm/queries/delete.py b/beanie/odm/queries/delete.py index 02b22d64..e6dade58 100644 --- a/beanie/odm/queries/delete.py +++ b/beanie/odm/queries/delete.py @@ -1,13 +1,13 @@ -from typing import Type, TYPE_CHECKING, Any, Mapping, Optional, Dict, Generator +from typing import TYPE_CHECKING, Any, Dict, Generator, Mapping, Optional, Type +from pymongo import DeleteMany as DeleteManyPyMongo +from pymongo import DeleteOne as DeleteOnePyMongo from pymongo.client_session import ClientSession from pymongo.results import DeleteResult from beanie.odm.bulk import BulkWriter, Operation from beanie.odm.interfaces.clone import CloneInterface from beanie.odm.interfaces.session import SessionMethods -from pymongo import DeleteOne as DeleteOnePyMongo -from pymongo import DeleteMany as DeleteManyPyMongo if TYPE_CHECKING: from beanie.odm.documents import DocType diff --git a/beanie/odm/queries/find.py b/beanie/odm/queries/find.py index 7e7bc9a5..5e3e4cd5 100644 --- a/beanie/odm/queries/find.py +++ b/beanie/odm/queries/find.py @@ -1,7 +1,7 @@ from typing import ( - Callable, TYPE_CHECKING, Any, + Callable, Coroutine, Dict, Generator, @@ -18,14 +18,13 @@ ) from pydantic import BaseModel +from pymongo import ReplaceOne from pymongo.client_session import ClientSession from pymongo.results import UpdateResult -from pymongo import ReplaceOne - from beanie.exceptions import DocumentNotFound -from beanie.odm.cache import LRUCache from beanie.odm.bulk import BulkWriter, Operation +from beanie.odm.cache import LRUCache from beanie.odm.enums import SortDirection from beanie.odm.interfaces.aggregation_methods import AggregateMethods from beanie.odm.interfaces.clone import CloneInterface @@ -39,9 +38,9 @@ DeleteOne, ) from beanie.odm.queries.update import ( - UpdateQuery, UpdateMany, UpdateOne, + UpdateQuery, UpdateResponse, ) from beanie.odm.utils.dump import get_dict diff --git a/beanie/odm/queries/update.py b/beanie/odm/queries/update.py index e8cc9fac..003192cc 100644 --- a/beanie/odm/queries/update.py +++ b/beanie/odm/queries/update.py @@ -1,34 +1,33 @@ from abc import abstractmethod from enum import Enum - -from beanie.odm.bulk import BulkWriter, Operation -from beanie.odm.interfaces.clone import CloneInterface -from beanie.odm.operators.update.general import SetRevisionId -from beanie.odm.utils.encoder import Encoder from typing import ( - Callable, - List, - Type, TYPE_CHECKING, - Optional, - Mapping, Any, + Callable, Dict, - Union, Generator, + List, + Mapping, + Optional, + Type, + Union, ) +from pymongo import ReturnDocument +from pymongo import UpdateMany as UpdateManyPyMongo +from pymongo import UpdateOne as UpdateOnePyMongo from pymongo.client_session import ClientSession -from pymongo.results import UpdateResult, InsertOneResult +from pymongo.results import InsertOneResult, UpdateResult +from beanie.odm.bulk import BulkWriter, Operation +from beanie.odm.interfaces.clone import CloneInterface from beanie.odm.interfaces.session import SessionMethods from beanie.odm.interfaces.update import ( UpdateMethods, ) from beanie.odm.operators.update import BaseUpdateOperator -from pymongo import UpdateOne as UpdateOnePyMongo, ReturnDocument -from pymongo import UpdateMany as UpdateManyPyMongo - +from beanie.odm.operators.update.general import SetRevisionId +from beanie.odm.utils.encoder import Encoder from beanie.odm.utils.parsing import parse_obj if TYPE_CHECKING: diff --git a/beanie/odm/registry.py b/beanie/odm/registry.py index a98f3b6e..25c4193c 100644 --- a/beanie/odm/registry.py +++ b/beanie/odm/registry.py @@ -1,4 +1,4 @@ -from typing import Dict, Type, Union, ForwardRef +from typing import Dict, ForwardRef, Type, Union from pydantic import BaseModel diff --git a/beanie/odm/settings/base.py b/beanie/odm/settings/base.py index b96afd22..d2d3075f 100644 --- a/beanie/odm/settings/base.py +++ b/beanie/odm/settings/base.py @@ -1,10 +1,11 @@ from datetime import timedelta -from typing import Optional, Dict, Any, Type +from typing import Any, Dict, Optional, Type -from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 -from motor.motor_asyncio import AsyncIOMotorDatabase, AsyncIOMotorCollection +from motor.motor_asyncio import AsyncIOMotorCollection, AsyncIOMotorDatabase from pydantic import BaseModel, Field +from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 + if IS_PYDANTIC_V2: from pydantic import ConfigDict diff --git a/beanie/odm/settings/document.py b/beanie/odm/settings/document.py index 8c0e18c6..7467c1ec 100644 --- a/beanie/odm/settings/document.py +++ b/beanie/odm/settings/document.py @@ -1,11 +1,11 @@ -from typing import Optional, List +from typing import List, Optional -from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 from pydantic import Field from beanie.odm.fields import IndexModelField from beanie.odm.settings.base import ItemSettings from beanie.odm.settings.timeseries import TimeSeriesConfig +from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 if IS_PYDANTIC_V2: from pydantic import ConfigDict diff --git a/beanie/odm/settings/timeseries.py b/beanie/odm/settings/timeseries.py index 622bf7a7..48c04a0b 100644 --- a/beanie/odm/settings/timeseries.py +++ b/beanie/odm/settings/timeseries.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import Optional, Dict, Any +from typing import Any, Dict, Optional from pydantic import BaseModel diff --git a/beanie/odm/settings/view.py b/beanie/odm/settings/view.py index 79f5a381..fb932e32 100644 --- a/beanie/odm/settings/view.py +++ b/beanie/odm/settings/view.py @@ -1,4 +1,4 @@ -from typing import List, Dict, Any, Union, Type +from typing import Any, Dict, List, Type, Union from beanie.odm.settings.base import ItemSettings diff --git a/beanie/odm/union_doc.py b/beanie/odm/union_doc.py index f8a0d917..7a336044 100644 --- a/beanie/odm/union_doc.py +++ b/beanie/odm/union_doc.py @@ -1,4 +1,4 @@ -from typing import ClassVar, Type, Dict, Optional +from typing import ClassVar, Dict, Optional, Type from beanie.exceptions import UnionDocNotInited from beanie.odm.interfaces.aggregate import AggregateInterface diff --git a/beanie/odm/utils/encoder.py b/beanie/odm/utils/encoder.py index 244b7bb1..b33bbbd8 100644 --- a/beanie/odm/utils/encoder.py +++ b/beanie/odm/utils/encoder.py @@ -15,22 +15,24 @@ from types import GeneratorType from typing import ( AbstractSet, + Any, + Callable, + Dict, List, Mapping, - Union, Optional, + Type, + Union, ) -from typing import Any, Callable, Dict, Type from uuid import UUID import bson -from bson import ObjectId, DBRef, Binary, Decimal128, Regex -from pydantic import BaseModel -from pydantic import SecretBytes, SecretStr +from bson import Binary, DBRef, Decimal128, ObjectId, Regex +from pydantic import BaseModel, SecretBytes, SecretStr -from beanie.odm.fields import Link, LinkTypes from beanie.odm import documents -from beanie.odm.utils.pydantic import get_iterator, IS_PYDANTIC_V2 +from beanie.odm.fields import Link, LinkTypes +from beanie.odm.utils.pydantic import IS_PYDANTIC_V2, get_iterator if IS_PYDANTIC_V2: from pydantic import RootModel diff --git a/beanie/odm/utils/init.py b/beanie/odm/utils/init.py index 658e26ce..a6057fd7 100644 --- a/beanie/odm/utils/init.py +++ b/beanie/odm/utils/init.py @@ -1,11 +1,11 @@ import sys from beanie.odm.utils.pydantic import ( - parse_model, - get_model_fields, - get_field_type, - get_extra_field_info, IS_PYDANTIC_V2, + get_extra_field_info, + get_field_type, + get_model_fields, + parse_model, ) if sys.version_info >= (3, 8): @@ -17,28 +17,27 @@ import inspect from copy import copy from typing import ( # type: ignore - Optional, List, + Optional, Type, Union, _GenericAlias, ) -from motor.motor_asyncio import AsyncIOMotorDatabase, AsyncIOMotorClient +from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase from pydantic import BaseModel from pydantic.fields import FieldInfo from pymongo import IndexModel -from beanie.exceptions import MongoDBVersionError, Deprecation +from beanie.exceptions import Deprecation, MongoDBVersionError from beanie.odm.actions import ActionRegistry from beanie.odm.cache import LRUCache -from beanie.odm.documents import DocType -from beanie.odm.documents import Document +from beanie.odm.documents import DocType, Document from beanie.odm.fields import ( + BackLink, ExpressionField, - LinkInfo, Link, - BackLink, + LinkInfo, LinkTypes, ) from beanie.odm.interfaces.detector import ModelType diff --git a/beanie/odm/utils/parsing.py b/beanie/odm/utils/parsing.py index d1b03af8..b1808b39 100644 --- a/beanie/odm/utils/parsing.py +++ b/beanie/odm/utils/parsing.py @@ -1,12 +1,13 @@ -from typing import Any, Type, Union, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, Type, Union + from pydantic import BaseModel from beanie.exceptions import ( - UnionHasNoRegisteredDocs, DocWasNotRegisteredInUnionClass, + UnionHasNoRegisteredDocs, ) from beanie.odm.interfaces.detector import ModelType -from beanie.odm.utils.pydantic import parse_model, get_config_value +from beanie.odm.utils.pydantic import get_config_value, parse_model if TYPE_CHECKING: from beanie.odm.documents import Document diff --git a/beanie/odm/utils/projection.py b/beanie/odm/utils/projection.py index 833ca6e4..3be3cc31 100644 --- a/beanie/odm/utils/projection.py +++ b/beanie/odm/utils/projection.py @@ -1,4 +1,4 @@ -from typing import Dict, Type, TypeVar, Optional +from typing import Dict, Optional, Type, TypeVar from pydantic import BaseModel diff --git a/beanie/odm/utils/pydantic.py b/beanie/odm/utils/pydantic.py index a8e17cce..c05f5535 100644 --- a/beanie/odm/utils/pydantic.py +++ b/beanie/odm/utils/pydantic.py @@ -1,4 +1,4 @@ -from typing import Type, Any +from typing import Any, Type import pydantic from pydantic import BaseModel diff --git a/beanie/odm/utils/relations.py b/beanie/odm/utils/relations.py index fd323e2d..9c07f731 100644 --- a/beanie/odm/utils/relations.py +++ b/beanie/odm/utils/relations.py @@ -1,5 +1,4 @@ -from typing import Any, Dict -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any, Dict from beanie.odm.fields import ( ExpressionField, diff --git a/beanie/odm/utils/self_validation.py b/beanie/odm/utils/self_validation.py index 3f333fc4..c20e1fb5 100644 --- a/beanie/odm/utils/self_validation.py +++ b/beanie/odm/utils/self_validation.py @@ -1,5 +1,5 @@ from functools import wraps -from typing import Callable, TYPE_CHECKING +from typing import TYPE_CHECKING, Callable if TYPE_CHECKING: from beanie.odm.documents import DocType diff --git a/beanie/odm/utils/state.py b/beanie/odm/utils/state.py index e5b0655d..4d9fdae3 100644 --- a/beanie/odm/utils/state.py +++ b/beanie/odm/utils/state.py @@ -1,6 +1,6 @@ import inspect from functools import wraps -from typing import Callable, TYPE_CHECKING +from typing import TYPE_CHECKING, Callable from beanie.exceptions import StateManagementIsTurnedOff, StateNotSaved diff --git a/beanie/odm/utils/typing.py b/beanie/odm/utils/typing.py index dc36df41..3aa3b8e4 100644 --- a/beanie/odm/utils/typing.py +++ b/beanie/odm/utils/typing.py @@ -5,8 +5,8 @@ else: from typing_extensions import get_args, get_origin -from typing import Type, Any import inspect +from typing import Any, Type def extract_id_class(annotation) -> Type[Any]: diff --git a/beanie/odm/views.py b/beanie/odm/views.py index ae367d2d..a38985f6 100644 --- a/beanie/odm/views.py +++ b/beanie/odm/views.py @@ -1,10 +1,10 @@ import asyncio from typing import Any, ClassVar, Dict, Optional, Union -from beanie.odm.fields import Link, LinkInfo from pydantic import BaseModel from beanie.exceptions import ViewWasNotInitialized +from beanie.odm.fields import Link, LinkInfo from beanie.odm.interfaces.aggregate import AggregateInterface from beanie.odm.interfaces.detector import DetectionInterface, ModelType from beanie.odm.interfaces.find import FindInterface diff --git a/beanie/operators.py b/beanie/operators.py index f2edc97e..aa339e0f 100644 --- a/beanie/operators.py +++ b/beanie/operators.py @@ -6,14 +6,14 @@ BitsAnySet, ) from beanie.odm.operators.find.comparison import ( - Eq, GT, GTE, - In, - NotIn, LT, LTE, NE, + Eq, + In, + NotIn, ) from beanie.odm.operators.find.element import Exists, Type from beanie.odm.operators.find.evaluation import ( @@ -25,30 +25,30 @@ Where, ) from beanie.odm.operators.find.geospatial import ( + Box, GeoIntersects, - GeoWithinTypes, GeoWithin, - Box, + GeoWithinTypes, Near, NearSphere, ) -from beanie.odm.operators.find.logical import Or, And, Nor, Not +from beanie.odm.operators.find.logical import And, Nor, Not, Or from beanie.odm.operators.update.array import ( AddToSet, Pop, Pull, - Push, PullAll, + Push, ) from beanie.odm.operators.update.bitwise import Bit from beanie.odm.operators.update.general import ( - Set, CurrentDate, Inc, - Min, Max, + Min, Mul, Rename, + Set, SetOnInsert, Unset, ) diff --git a/docs/changelog.md b/docs/changelog.md index 49f17bf0..775e3f03 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,14 @@ Beanie project +## [1.22.6] - 2023-09-16 + +### Update Precommit Hooks & CI +- Author - [George Sakkis](https://github.com/gsakkis) +- PR + +[1.22.6]: https://pypi.org/project/beanie/1.22.6 + ## [1.22.5] - 2023-09-13 ### Fix: Unify Methods for Retrieving Field's Extra Parameters During Backlink Processing diff --git a/pyproject.toml b/pyproject.toml index 0e4dc776..282ddb4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi" [project] name = "beanie" -version = "1.22.5" +version = "1.22.6" description = "Asynchronous Python ODM for MongoDB" readme = "README.md" requires-python = ">=3.7,<4.0" @@ -111,33 +111,9 @@ include = ["tests/typing", "beanie"] [tool.ruff] line-length = 79 - -# Enable Pyflakes `E` and `F` codes by default. -select = ["E", "F"] ignore = ["E501"] - -# Exclude a variety of commonly ignored directories. -exclude = [ - ".bzr", - ".direnv", - ".eggs", - ".git", - ".hg", - ".mypy_cache", - ".nox", - ".pants.d", - ".ruff_cache", - ".svn", - ".tox", - ".venv", - "__pypackages__", - "_build", - "buck-out", - "build", - "dist", - "node_modules", - "venv", -] +extend-select = ["I001"] +fix = true # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" diff --git a/tests/fastapi/app.py b/tests/fastapi/app.py index 13077de4..58d5e1eb 100644 --- a/tests/fastapi/app.py +++ b/tests/fastapi/app.py @@ -1,9 +1,9 @@ import motor.motor_asyncio -from beanie import init_beanie from fastapi import FastAPI +from beanie import init_beanie from tests.conftest import Settings -from tests.fastapi.models import HouseAPI, WindowAPI, DoorAPI, RoofAPI +from tests.fastapi.models import DoorAPI, HouseAPI, RoofAPI, WindowAPI from tests.fastapi.routes import house_router app = FastAPI() diff --git a/tests/fastapi/conftest.py b/tests/fastapi/conftest.py index 81a359da..ab91b611 100644 --- a/tests/fastapi/conftest.py +++ b/tests/fastapi/conftest.py @@ -3,7 +3,7 @@ from httpx import AsyncClient from tests.fastapi.app import app -from tests.fastapi.models import HouseAPI, WindowAPI, DoorAPI, RoofAPI +from tests.fastapi.models import DoorAPI, HouseAPI, RoofAPI, WindowAPI @pytest.fixture(autouse=True) diff --git a/tests/fastapi/models.py b/tests/fastapi/models.py index 98447fa2..74d9b1f2 100644 --- a/tests/fastapi/models.py +++ b/tests/fastapi/models.py @@ -1,6 +1,6 @@ from typing import List -from beanie import Document, Link, Indexed +from beanie import Document, Indexed, Link class WindowAPI(Document): diff --git a/tests/fastapi/routes.py b/tests/fastapi/routes.py index 7d1f918e..26b785ed 100644 --- a/tests/fastapi/routes.py +++ b/tests/fastapi/routes.py @@ -1,7 +1,7 @@ from fastapi import APIRouter from pydantic import BaseModel -from beanie import WriteRules, PydanticObjectId +from beanie import PydanticObjectId, WriteRules from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 from tests.fastapi.models import HouseAPI, WindowAPI diff --git a/tests/migrations/migrations_for_test/break/20210413211219_break.py b/tests/migrations/migrations_for_test/break/20210413211219_break.py index 33c90b87..e2c92521 100644 --- a/tests/migrations/migrations_for_test/break/20210413211219_break.py +++ b/tests/migrations/migrations_for_test/break/20210413211219_break.py @@ -1,6 +1,6 @@ from pydantic.main import BaseModel -from beanie import Document, iterative_migration, PydanticObjectId, Indexed +from beanie import Document, Indexed, PydanticObjectId, iterative_migration class Tag(BaseModel): diff --git a/tests/migrations/test_break.py b/tests/migrations/test_break.py index 54698cf2..59983250 100644 --- a/tests/migrations/test_break.py +++ b/tests/migrations/test_break.py @@ -1,7 +1,7 @@ import pytest from pydantic.main import BaseModel -from beanie import init_beanie, Indexed +from beanie import Indexed, init_beanie from beanie.executors.migrate import MigrationSettings, run_migrate from beanie.odm.documents import Document from beanie.odm.models import InspectionStatuses diff --git a/tests/migrations/test_free_fall.py b/tests/migrations/test_free_fall.py index e9478ed6..2b03c4f3 100644 --- a/tests/migrations/test_free_fall.py +++ b/tests/migrations/test_free_fall.py @@ -1,5 +1,6 @@ import pytest from pydantic.main import BaseModel + from beanie import init_beanie from beanie.executors.migrate import MigrationSettings, run_migrate from beanie.migrations.models import RunningDirections diff --git a/tests/odm/conftest.py b/tests/odm/conftest.py index 535a7d02..9176c812 100644 --- a/tests/odm/conftest.py +++ b/tests/odm/conftest.py @@ -6,92 +6,92 @@ from beanie.odm.utils.init import init_beanie from tests.odm.models import ( + ADocument, + BDocument, Bicycle, Bike, Bus, Car, + Doc2NonRoot, + DocNonRoot, DocumentForEncodingTest, DocumentForEncodingTestDate, - DocumentWithStringField, DocumentMultiModelOne, DocumentMultiModelTwo, DocumentTestModel, - DocumentTestModelWithLink, DocumentTestModelFailInspection, DocumentTestModelWithComplexIndex, DocumentTestModelWithCustomCollectionName, DocumentTestModelWithIndexFlags, DocumentTestModelWithIndexFlagsAliases, + DocumentTestModelWithLink, DocumentTestModelWithSimpleIndex, + DocumentToBeLinked, DocumentUnion, DocumentWithActions, DocumentWithActions2, + DocumentWithBackLink, + DocumentWithBsonBinaryField, DocumentWithBsonEncodersFiledsTypes, DocumentWithCustomFiledsTypes, DocumentWithCustomIdInt, DocumentWithCustomIdUUID, + DocumentWithCustomInit, + DocumentWithDecimalField, DocumentWithExtras, + DocumentWithIndexMerging1, + DocumentWithIndexMerging2, + DocumentWithKeepNullsFalse, + DocumentWithLink, + DocumentWithList, + DocumentWithListBackLink, + DocumentWithListLink, + DocumentWithListOfLinks, + DocumentWithOptionalBackLink, + DocumentWithOptionalListBackLink, DocumentWithPydanticConfig, DocumentWithRevisionTurnedOn, + DocumentWithRootModelAsAField, + DocumentWithStringField, + DocumentWithTextIndexAndLink, + DocumentWithTimeStampToTestConsistency, DocumentWithTurnedOffStateManagement, DocumentWithTurnedOnReplaceObjects, - DocumentWithTurnedOnStateManagement, DocumentWithTurnedOnSavePrevious, + DocumentWithTurnedOnStateManagement, + DocumentWithTurnedOnStateManagementWithCustomId, DocumentWithValidationOnSave, + DocWithCallWrapper, Door, GeoObject, House, HouseWithRevision, InheritedDocumentWithActions, + LinkDocumentForTextSeacrh, Lock, LockWithRevision, + LoopedLinksA, + LoopedLinksB, Nested, Option1, Option2, Owner, + PackageElemMatch, + Region, Roof, + RootDocument, Sample, SampleLazyParsing, SampleWithMutableObjects, + SelfLinked, + StateAndDecimalFieldModel, SubDocument, - Doc2NonRoot, - DocNonRoot, + UsersAddresses, Vehicle, Window, WindowWithRevision, Yard, YardWithRevision, - RootDocument, - ADocument, - BDocument, - StateAndDecimalFieldModel, - Region, - UsersAddresses, - SelfLinked, - LoopedLinksA, - LoopedLinksB, - DocumentWithTurnedOnStateManagementWithCustomId, - DocumentWithDecimalField, - DocumentWithKeepNullsFalse, - PackageElemMatch, - DocumentWithLink, - DocumentWithBackLink, - DocumentWithListBackLink, - DocumentWithListLink, - DocumentWithListOfLinks, - DocumentToBeLinked, - DocumentWithTimeStampToTestConsistency, - DocumentWithIndexMerging1, - DocumentWithIndexMerging2, - DocumentWithCustomInit, - DocumentWithTextIndexAndLink, - LinkDocumentForTextSeacrh, - DocumentWithList, - DocumentWithBsonBinaryField, - DocumentWithRootModelAsAField, - DocWithCallWrapper, - DocumentWithOptionalBackLink, - DocumentWithOptionalListBackLink, ) from tests.odm.views import ViewForTest, ViewForTestWithLink diff --git a/tests/odm/documents/test_create.py b/tests/odm/documents/test_create.py index 4746ba70..6333bf09 100644 --- a/tests/odm/documents/test_create.py +++ b/tests/odm/documents/test_create.py @@ -4,8 +4,8 @@ from beanie.odm.fields import PydanticObjectId from tests.odm.models import ( DocumentTestModel, - ModelWithOptionalField, DocumentWithKeepNullsFalse, + ModelWithOptionalField, ) diff --git a/tests/odm/documents/test_inheritance.py b/tests/odm/documents/test_inheritance.py index 2340279f..8454573b 100644 --- a/tests/odm/documents/test_inheritance.py +++ b/tests/odm/documents/test_inheritance.py @@ -1,13 +1,13 @@ from beanie import Link from tests.odm.models import ( - Vehicle, Bicycle, Bike, - Car, Bus, - Owner, - DocNonRoot, + Car, Doc2NonRoot, + DocNonRoot, + Owner, + Vehicle, ) diff --git a/tests/odm/documents/test_init.py b/tests/odm/documents/test_init.py index cba1bde7..452b8e71 100644 --- a/tests/odm/documents/test_init.py +++ b/tests/odm/documents/test_init.py @@ -1,22 +1,22 @@ import pytest from motor.motor_asyncio import AsyncIOMotorCollection +from pymongo import IndexModel -from beanie import Document, init_beanie, Indexed +from beanie import Document, Indexed, init_beanie from beanie.exceptions import CollectionWasNotInitialized from beanie.odm.utils.projection import get_projection from tests.odm.models import ( DocumentTestModel, + DocumentTestModelStringImport, + DocumentTestModelWithComplexIndex, DocumentTestModelWithCustomCollectionName, + DocumentTestModelWithDroppedIndex, + DocumentTestModelWithIndexFlags, DocumentTestModelWithIndexFlagsAliases, DocumentTestModelWithSimpleIndex, - DocumentTestModelWithIndexFlags, - DocumentTestModelWithComplexIndex, - DocumentTestModelStringImport, - DocumentTestModelWithDroppedIndex, - DocumentWithIndexMerging2, DocumentWithCustomInit, + DocumentWithIndexMerging2, ) -from pymongo import IndexModel async def test_init_collection_was_not_initialized(): diff --git a/tests/odm/documents/test_pydantic_extras.py b/tests/odm/documents/test_pydantic_extras.py index b3739ac5..91724891 100644 --- a/tests/odm/documents/test_pydantic_extras.py +++ b/tests/odm/documents/test_pydantic_extras.py @@ -2,8 +2,8 @@ from tests.odm.models import ( DocumentWithExtras, - DocumentWithPydanticConfig, DocumentWithExtrasKw, + DocumentWithPydanticConfig, ) diff --git a/tests/odm/documents/test_revision.py b/tests/odm/documents/test_revision.py index 6886e2da..1c992828 100644 --- a/tests/odm/documents/test_revision.py +++ b/tests/odm/documents/test_revision.py @@ -1,10 +1,10 @@ import pytest +from pymongo.errors import BulkWriteError from beanie import BulkWriter from beanie.exceptions import RevisionIdWasChanged from beanie.odm.operators.update.general import Inc from tests.odm.models import DocumentWithRevisionTurnedOn -from pymongo.errors import BulkWriteError async def test_replace(): diff --git a/tests/odm/documents/test_update.py b/tests/odm/documents/test_update.py index fe5d5310..57dca926 100644 --- a/tests/odm/documents/test_update.py +++ b/tests/odm/documents/test_update.py @@ -1,20 +1,19 @@ import pytest -from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 from beanie.exceptions import ( DocumentNotFound, ReplaceError, ) from beanie.odm.fields import PydanticObjectId +from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 from tests.odm.models import ( DocumentTestModel, - ModelWithOptionalField, DocumentWithKeepNullsFalse, DocumentWithList, + ModelWithOptionalField, Sample, ) - # REPLACE # diff --git a/tests/odm/models.py b/tests/odm/models.py index 788a09a4..b2e18fd6 100644 --- a/tests/odm/models.py +++ b/tests/odm/models.py @@ -10,45 +10,44 @@ ) from pathlib import Path from typing import ( + Any, + Callable, + ClassVar, Dict, List, Optional, Set, Tuple, Union, - ClassVar, - Any, - Callable, ) from uuid import UUID, uuid4 import pymongo from pydantic import ( BaseModel, + ConfigDict, Field, PrivateAttr, SecretBytes, SecretStr, - ConfigDict, ) from pydantic.fields import FieldInfo from pydantic_core import core_schema - from pymongo import IndexModel -from beanie import DecimalAnnotation from beanie import ( + DecimalAnnotation, Document, Indexed, Insert, Replace, + Save, Update, ValidateOnSave, - Save, ) from beanie.odm.actions import Delete, after_event, before_event from beanie.odm.custom_types.bson.binary import BsonBinary -from beanie.odm.fields import Link, PydanticObjectId, BackLink +from beanie.odm.fields import BackLink, Link, PydanticObjectId from beanie.odm.settings.timeseries import TimeSeriesConfig from beanie.odm.union_doc import UnionDoc from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 diff --git a/tests/odm/operators/find/test_array.py b/tests/odm/operators/find/test_array.py index 3a52ef14..66696177 100644 --- a/tests/odm/operators/find/test_array.py +++ b/tests/odm/operators/find/test_array.py @@ -1,5 +1,5 @@ from beanie.odm.operators.find.array import All, ElemMatch, Size -from tests.odm.models import Sample, PackageElemMatch +from tests.odm.models import PackageElemMatch, Sample async def test_all(): diff --git a/tests/odm/operators/find/test_comparison.py b/tests/odm/operators/find/test_comparison.py index 2de6b379..d81f0d00 100644 --- a/tests/odm/operators/find/test_comparison.py +++ b/tests/odm/operators/find/test_comparison.py @@ -1,11 +1,11 @@ from beanie.odm.operators.find.comparison import ( - Eq, GT, GTE, - In, LT, LTE, NE, + Eq, + In, NotIn, ) from tests.odm.models import Sample diff --git a/tests/odm/operators/find/test_logical.py b/tests/odm/operators/find/test_logical.py index 574728f2..c0cbc98e 100644 --- a/tests/odm/operators/find/test_logical.py +++ b/tests/odm/operators/find/test_logical.py @@ -1,6 +1,6 @@ import pytest -from beanie.odm.operators.find.logical import And, Not, Nor, Or +from beanie.odm.operators.find.logical import And, Nor, Not, Or from tests.odm.models import Sample diff --git a/tests/odm/operators/update/test_array.py b/tests/odm/operators/update/test_array.py index 06e2ed95..48ea0dfa 100644 --- a/tests/odm/operators/update/test_array.py +++ b/tests/odm/operators/update/test_array.py @@ -1,8 +1,8 @@ from beanie.odm.operators.update.array import ( AddToSet, + Pop, Pull, PullAll, - Pop, Push, ) from tests.odm.models import Sample diff --git a/tests/odm/operators/update/test_general.py b/tests/odm/operators/update/test_general.py index 1cebe063..e89c0bb0 100644 --- a/tests/odm/operators/update/test_general.py +++ b/tests/odm/operators/update/test_general.py @@ -1,13 +1,13 @@ from beanie.odm.operators.update.general import ( - Set, CurrentDate, Inc, - Unset, - SetOnInsert, - Rename, - Mul, Max, Min, + Mul, + Rename, + Set, + SetOnInsert, + Unset, ) from tests.odm.models import Sample diff --git a/tests/odm/query/test_delete.py b/tests/odm/query/test_delete.py index ab0fc885..a9e761c7 100644 --- a/tests/odm/query/test_delete.py +++ b/tests/odm/query/test_delete.py @@ -1,6 +1,7 @@ import pytest -from tests.odm.models import Sample + from beanie.odm.queries.delete import DeleteMany +from tests.odm.models import Sample async def test_delete_many(preset_documents): diff --git a/tests/odm/query/test_find.py b/tests/odm/query/test_find.py index 085b8617..d93f4216 100644 --- a/tests/odm/query/test_find.py +++ b/tests/odm/query/test_find.py @@ -5,10 +5,10 @@ from beanie.odm.enums import SortDirection from tests.odm.models import ( - Sample, + Color, DocumentWithBsonEncodersFiledsTypes, House, - Color, + Sample, ) diff --git a/tests/odm/query/test_update.py b/tests/odm/query/test_update.py index 977734f0..e0a2f60f 100644 --- a/tests/odm/query/test_update.py +++ b/tests/odm/query/test_update.py @@ -2,7 +2,7 @@ import pytest -from beanie.odm.operators.update.general import Set, Max +from beanie.odm.operators.update.general import Max, Set from beanie.odm.queries.update import UpdateResponse from tests.odm.models import Sample diff --git a/tests/odm/query/test_update_methods.py b/tests/odm/query/test_update_methods.py index 2c3fa488..d79b347d 100644 --- a/tests/odm/query/test_update_methods.py +++ b/tests/odm/query/test_update_methods.py @@ -1,5 +1,5 @@ from beanie.odm.operators.update.general import Max -from beanie.odm.queries.update import UpdateQuery, UpdateMany +from beanie.odm.queries.update import UpdateMany, UpdateQuery from tests.odm.models import Sample diff --git a/tests/odm/test_actions.py b/tests/odm/test_actions.py index ff496973..7dd1859d 100644 --- a/tests/odm/test_actions.py +++ b/tests/odm/test_actions.py @@ -1,11 +1,10 @@ import pytest -from beanie import Before, After - +from beanie import After, Before from tests.odm.models import ( DocumentWithActions, - InheritedDocumentWithActions, DocumentWithActions2, + InheritedDocumentWithActions, ) diff --git a/tests/odm/test_encoder.py b/tests/odm/test_encoder.py index 3354ca3c..40a23ff4 100644 --- a/tests/odm/test_encoder.py +++ b/tests/odm/test_encoder.py @@ -1,18 +1,18 @@ import re -from datetime import datetime, date +from datetime import date, datetime from bson import Binary, Regex from beanie.odm.utils.encoder import Encoder from tests.odm.models import ( + Child, DocumentForEncodingTest, DocumentForEncodingTestDate, - DocumentWithStringField, - SampleWithMutableObjects, - Child, DocumentWithDecimalField, DocumentWithKeepNullsFalse, + DocumentWithStringField, ModelWithOptionalField, + SampleWithMutableObjects, ) diff --git a/tests/odm/test_fields.py b/tests/odm/test_fields.py index 6e15a773..c14d79a3 100644 --- a/tests/odm/test_fields.py +++ b/tests/odm/test_fields.py @@ -1,8 +1,8 @@ import datetime from decimal import Decimal - from pathlib import Path -from typing import Mapping, AbstractSet +from typing import AbstractSet, Mapping + import pytest from pydantic import BaseModel, ValidationError @@ -13,9 +13,9 @@ from beanie.odm.utils.encoder import Encoder from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 from tests.odm.models import ( - DocumentWithCustomFiledsTypes, - DocumentWithBsonEncodersFiledsTypes, DocumentTestModel, + DocumentWithBsonEncodersFiledsTypes, + DocumentWithCustomFiledsTypes, Sample, ) diff --git a/tests/odm/test_id.py b/tests/odm/test_id.py index 839e357c..b98d5450 100644 --- a/tests/odm/test_id.py +++ b/tests/odm/test_id.py @@ -1,6 +1,6 @@ from uuid import UUID -from tests.odm.models import DocumentWithCustomIdUUID, DocumentWithCustomIdInt +from tests.odm.models import DocumentWithCustomIdInt, DocumentWithCustomIdUUID async def test_uuid_id(): diff --git a/tests/odm/test_relations.py b/tests/odm/test_relations.py index 16694683..76c5ea8b 100644 --- a/tests/odm/test_relations.py +++ b/tests/odm/test_relations.py @@ -3,38 +3,38 @@ import pytest from pydantic.fields import Field -from beanie import init_beanie, Document +from beanie import Document, init_beanie from beanie.exceptions import DocumentWasNotSaved -from beanie.odm.fields import DeleteRules, Link, WriteRules, BackLink +from beanie.odm.fields import BackLink, DeleteRules, Link, WriteRules from beanie.odm.utils.pydantic import ( - parse_model, IS_PYDANTIC_V2, get_model_fields, + parse_model, ) from tests.odm.models import ( - Door, - House, - Lock, - Roof, - Window, - Yard, - RootDocument, + AddressView, ADocument, BDocument, - UsersAddresses, - Region, - AddressView, - SelfLinked, - LoopedLinksA, - LoopedLinksB, + DocumentToBeLinked, DocumentWithBackLink, DocumentWithLink, DocumentWithListBackLink, DocumentWithListLink, DocumentWithListOfLinks, - DocumentToBeLinked, DocumentWithTextIndexAndLink, + Door, + House, LinkDocumentForTextSeacrh, + Lock, + LoopedLinksA, + LoopedLinksB, + Region, + Roof, + RootDocument, + SelfLinked, + UsersAddresses, + Window, + Yard, ) diff --git a/tests/odm/test_root_models.py b/tests/odm/test_root_models.py index bfe8e4d6..d4d47bc1 100644 --- a/tests/odm/test_root_models.py +++ b/tests/odm/test_root_models.py @@ -1,8 +1,6 @@ from beanie.odm.utils.pydantic import IS_PYDANTIC_V2 - from tests.odm.models import DocumentWithRootModelAsAField - if IS_PYDANTIC_V2: class TestRootModels: diff --git a/tests/odm/test_state_management.py b/tests/odm/test_state_management.py index b5c43609..cc4e473d 100644 --- a/tests/odm/test_state_management.py +++ b/tests/odm/test_state_management.py @@ -8,14 +8,14 @@ from tests.odm.models import ( DocumentWithTurnedOffStateManagement, DocumentWithTurnedOnReplaceObjects, - DocumentWithTurnedOnStateManagement, DocumentWithTurnedOnSavePrevious, + DocumentWithTurnedOnStateManagement, + DocumentWithTurnedOnStateManagementWithCustomId, HouseWithRevision, InternalDoc, LockWithRevision, - WindowWithRevision, StateAndDecimalFieldModel, - DocumentWithTurnedOnStateManagementWithCustomId, + WindowWithRevision, ) diff --git a/tests/odm/test_typing_utils.py b/tests/odm/test_typing_utils.py index 75402db3..bacfc80f 100644 --- a/tests/odm/test_typing_utils.py +++ b/tests/odm/test_typing_utils.py @@ -1,7 +1,7 @@ from typing import Optional, Union -from beanie.odm.utils.typing import extract_id_class from beanie import Document, Link +from beanie.odm.utils.typing import extract_id_class class Lock(Document): diff --git a/tests/test_beanie.py b/tests/test_beanie.py index 6d8f006b..226bc10d 100644 --- a/tests/test_beanie.py +++ b/tests/test_beanie.py @@ -2,4 +2,4 @@ def test_version(): - assert __version__ == "1.22.5" + assert __version__ == "1.22.6" diff --git a/tests/typing/aggregation.py b/tests/typing/aggregation.py index 654a0cce..4a337cab 100644 --- a/tests/typing/aggregation.py +++ b/tests/typing/aggregation.py @@ -1,6 +1,6 @@ -from typing import List, Dict, Any +from typing import Any, Dict, List -from tests.typing.models import Test, ProjectionTest +from tests.typing.models import ProjectionTest, Test async def aggregate() -> List[Dict[str, Any]]: diff --git a/tests/typing/find.py b/tests/typing/find.py index b4905d4a..45691d86 100644 --- a/tests/typing/find.py +++ b/tests/typing/find.py @@ -1,6 +1,6 @@ from typing import List, Optional -from tests.typing.models import Test, ProjectionTest +from tests.typing.models import ProjectionTest, Test async def find_many() -> List[Test]: