Skip to content

Commit cd7d886

Browse files
committed
fix: Replace deprecated datetime.utcnow() with datetime.now(timezone.utc)
Python 3.12 deprecates datetime.utcnow(), scheduled for removal in 3.14. Updated 6 files: - opwen_email_server/mailers/echo.py - opwen_email_server/mailers/wikipedia.py - opwen_email_server/utils/email_parser.py - opwen_email_client/webapp/views.py - opwen_email_client/webapp/forms/email.py - opwen_email_client/domain/email/sql_store.py
1 parent 6544d95 commit cd7d886

File tree

6 files changed

+15
-6
lines changed

6 files changed

+15
-6
lines changed

opwen_email_client/domain/email/sql_store.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime
2+
from datetime import timezone
23

34
from sqlalchemy import BLOB
45
from sqlalchemy import Boolean
@@ -232,7 +233,7 @@ def _create_attachment(cls, db, attachment):
232233
db.add(_Attachment.from_dict(db, attachment))
233234

234235
def _mark_sent(self, uids):
235-
now = datetime.utcnow()
236+
now = datetime.now(timezone.utc).replace(tzinfo=None)
236237
set_sent_at = {_Email.sent_at: now}
237238

238239
with self._dbwrite() as db:

opwen_email_client/webapp/forms/email.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime
2+
from datetime import timezone
23
from io import BytesIO
34
from itertools import chain
45
from mimetypes import guess_type
@@ -73,7 +74,7 @@ def as_dict(self, email_store: EmailStore) -> dict:
7374

7475
sent_at = None
7576
if all(_is_local_message(address) for address in chain(to, cc, bcc)):
76-
sent_at = datetime.utcnow().strftime('%Y-%m-%d %H:%M')
77+
sent_at = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M')
7778

7879
form['sent_at'] = sent_at
7980
form['read'] = True

opwen_email_client/webapp/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import datetime
22
from datetime import timedelta
3+
from datetime import timezone
34
from io import BytesIO
45
from os import path
56
from typing import Iterable
@@ -186,7 +187,7 @@ def register_complete() -> Response:
186187
user_store = app.ioc.user_store
187188

188189
send_welcome_email = SendWelcomeEmail(
189-
time=datetime.utcnow(),
190+
time=datetime.now(timezone.utc).replace(tzinfo=None),
190191
to=current_user.email,
191192
email_store=app.ioc.email_store,
192193
)

opwen_email_server/mailers/echo.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
from datetime import datetime
2+
from datetime import timezone
23
from typing import Callable
34

45
from opwen_email_server.utils.log import LogMixin
56

67
ECHO_ADDRESS = 'echo@bot.lokole.ca'
78

89

10+
def _utcnow() -> datetime:
11+
return datetime.now(timezone.utc).replace(tzinfo=None)
12+
13+
914
class EchoEmailFormatter(LogMixin):
1015

11-
def __init__(self, now: Callable[[], datetime] = datetime.utcnow):
16+
def __init__(self, now: Callable[[], datetime] = _utcnow):
1217
self._now = now
1318

1419
def __call__(self, email: dict) -> dict:

opwen_email_server/mailers/wikipedia.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime
2+
from datetime import timezone
23
from typing import Callable
34
from urllib.parse import urlparse
45

@@ -21,7 +22,7 @@ def __init__(self,
2122
languages_getter: Callable[[], dict] = languages,
2223
language_setter: Callable[[str], None] = set_lang,
2324
page_fetch: Callable[[str], WikipediaPage] = page,
24-
now: Callable[[], datetime] = datetime.utcnow):
25+
now: Callable[[], datetime] = lambda: datetime.now(timezone.utc).replace(tzinfo=None)):
2526
self._now = now
2627
self._languages = languages_getter
2728
self._language_setter = language_setter

opwen_email_server/utils/email_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def get_domain(address: str) -> str:
140140

141141
def ensure_has_sent_at(email: dict):
142142
if not email.get('sent_at'):
143-
email['sent_at'] = datetime.utcnow().strftime('%Y-%m-%d %H:%M')
143+
email['sent_at'] = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M')
144144

145145

146146
def _get_image_type(response: Response, url: str) -> Optional[str]:

0 commit comments

Comments
 (0)