diff --git a/beanie/odm/cache.py b/beanie/odm/cache.py index 57c15a4c..f5297d48 100644 --- a/beanie/odm/cache.py +++ b/beanie/odm/cache.py @@ -1,6 +1,6 @@ import collections import datetime -from datetime import timedelta +from datetime import timedelta, timezone from typing import Any, Optional from pydantic import BaseModel, Field @@ -8,7 +8,7 @@ class CachedItem(BaseModel): timestamp: datetime.datetime = Field( - default_factory=datetime.datetime.utcnow + default_factory=lambda: datetime.datetime.now(tz=timezone.utc) ) value: Any @@ -21,9 +21,9 @@ def __init__(self, capacity: int, expiration_time: timedelta): def get(self, key) -> Optional[CachedItem]: try: - item = self.cache.pop(key) + item: CachedItem = self.cache.pop(key) if ( - datetime.datetime.utcnow() - item.timestamp + datetime.datetime.now(tz=timezone.utc) - item.timestamp > self.expiration_time ): return None diff --git a/beanie/odm/documents.py b/beanie/odm/documents.py index e6a63d9f..65c47197 100644 --- a/beanie/odm/documents.py +++ b/beanie/odm/documents.py @@ -1,6 +1,6 @@ import asyncio import warnings -from datetime import datetime +from datetime import datetime, timezone from enum import Enum from typing import ( TYPE_CHECKING, @@ -1245,7 +1245,7 @@ async def delete( skip_actions: Optional[List[Union[ActionDirections, str]]] = None, **pymongo_kwargs, ) -> Optional[DeleteResult]: - self.deleted_at = datetime.utcnow() + self.deleted_at = datetime.now(tz=timezone.utc) await self.save() return None diff --git a/tests/odm/conftest.py b/tests/odm/conftest.py index ea84c081..c6c30adb 100644 --- a/tests/odm/conftest.py +++ b/tests/odm/conftest.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from random import randint from typing import List @@ -121,7 +121,7 @@ def point(): async def preset_documents(point): docs = [] for i in range(10): - timestamp = datetime.utcnow() - timedelta(days=i) + timestamp = datetime.now(tz=timezone.utc) - timedelta(days=i) integer_1: int = i // 3 integer_2: int = i // 2 float_num = integer_1 + 0.3 @@ -177,7 +177,7 @@ def sample_doc_not_saved(point): ] ) return Sample( - timestamp=datetime.utcnow(), + timestamp=datetime.now(tz=timezone.utc), increment=0, integer=0, float_num=0, diff --git a/tests/odm/query/test_find.py b/tests/odm/query/test_find.py index f27511d8..dffa2e4f 100644 --- a/tests/odm/query/test_find.py +++ b/tests/odm/query/test_find.py @@ -311,7 +311,8 @@ async def test_find_many_with_session(preset_documents, session): async def test_bson_encoders_filed_types(): custom = DocumentWithBsonEncodersFiledsTypes( - color="7fffd4", timestamp=datetime.datetime.utcnow() + color="7fffd4", + timestamp=datetime.datetime.now(tz=datetime.timezone.utc), ) c = await custom.insert() c_fromdb = await DocumentWithBsonEncodersFiledsTypes.find_one( @@ -321,8 +322,12 @@ async def test_bson_encoders_filed_types(): async def test_find_by_datetime(preset_documents): - datetime_1 = datetime.datetime.utcnow() - datetime.timedelta(days=7) - datetime_2 = datetime.datetime.utcnow() - datetime.timedelta(days=2) + datetime_1 = datetime.datetime.now( + tz=datetime.timezone.utc + ) - datetime.timedelta(days=7) + datetime_2 = datetime.datetime.now( + tz=datetime.timezone.utc + ) - datetime.timedelta(days=2) docs = await Sample.find( Sample.timestamp >= datetime_1, Sample.timestamp <= datetime_2, diff --git a/tests/odm/test_fields.py b/tests/odm/test_fields.py index 5fa26db2..54db03af 100644 --- a/tests/odm/test_fields.py +++ b/tests/odm/test_fields.py @@ -42,7 +42,8 @@ def test_pydantic_object_id_bytes_input(): async def test_bson_encoders_filed_types(): custom = DocumentWithBsonEncodersFiledsTypes( - color="7fffd4", timestamp=datetime.datetime.utcnow() + color="7fffd4", + timestamp=datetime.datetime.now(tz=datetime.timezone.utc), ) encoded = get_dict(custom) assert isinstance(encoded["timestamp"], str)