Skip to content

Commit a364e22

Browse files
committed
Use UTC compatible with py<3.12
1 parent fc80f79 commit a364e22

File tree

5 files changed

+21
-19
lines changed

5 files changed

+21
-19
lines changed

tiled/adapters/mapping.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import operator
55
import sys
66
from collections import Counter
7-
from datetime import UTC, datetime, timedelta
7+
from datetime import datetime, timedelta, timezone
88
from typing import (
99
TYPE_CHECKING,
1010
Any,
@@ -286,7 +286,7 @@ def metadata_stale_at(self) -> Optional[datetime]:
286286
"""
287287
if self.metadata_stale_after is None:
288288
return None
289-
return self.metadata_stale_after + datetime.now(UTC)
289+
return self.metadata_stale_after + datetime.now(timezone.utc)
290290

291291
@property
292292
def entries_stale_at(self) -> Optional[datetime]:
@@ -298,7 +298,7 @@ def entries_stale_at(self) -> Optional[datetime]:
298298
"""
299299
if self.entries_stale_after is None:
300300
return None
301-
return self.entries_stale_after + datetime.now(UTC)
301+
return self.entries_stale_after + datetime.now(timezone.utc)
302302

303303
def new_variation(
304304
self,

tiled/authn_database/core.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import hashlib
22
import uuid as uuid_module
3-
from datetime import UTC, datetime
3+
from datetime import datetime, timezone
44

55
from sqlalchemy.ext.asyncio import AsyncSession
66
from sqlalchemy.future import select
@@ -77,12 +77,12 @@ async def purge_expired(db, cls):
7777
"""
7878
Remove expired entries.
7979
"""
80-
now = datetime.now(UTC)
80+
now = datetime.now(timezone.utc)
8181
num_expired = 0
8282
statement = (
8383
select(cls)
8484
.filter(cls.expiration_time.is_not(None))
85-
.filter(cls.expiration_time.replace(tzinfo=UTC) < now)
85+
.filter(cls.expiration_time.replace(tzinfo=timezone.utc) < now)
8686
)
8787
result = await db.execute(statement)
8888
for obj in result.scalars():
@@ -145,8 +145,8 @@ async def lookup_valid_session(db, session_id):
145145
if session is None:
146146
return None
147147
if session.expiration_time is not None and session.expiration_time.replace(
148-
tzinfo=UTC
149-
) < datetime.now(UTC):
148+
tzinfo=timezone.utc
149+
) < datetime.now(timezone.utc):
150150
await db.delete(session)
151151
await db.commit()
152152
return None
@@ -170,7 +170,8 @@ async def lookup_valid_pending_session_by_device_code(db, device_code):
170170
return None
171171
if (
172172
pending_session.expiration_time is not None
173-
and pending_session.expiration_time.replace(tzinfo=UTC) < datetime.now(UTC)
173+
and pending_session.expiration_time.replace(tzinfo=timezone.utc)
174+
< datetime.now(timezone.utc)
174175
):
175176
await db.delete(pending_session)
176177
await db.commit()
@@ -188,7 +189,8 @@ async def lookup_valid_pending_session_by_user_code(db, user_code):
188189
return None
189190
if (
190191
pending_session.expiration_time is not None
191-
and pending_session.expiration_time.replace(tzinfo=UTC) < datetime.now(UTC)
192+
and pending_session.expiration_time.replace(tzinfo=timezone.utc)
193+
< datetime.now(timezone.utc)
192194
):
193195
await db.delete(pending_session)
194196
await db.commit()
@@ -227,7 +229,7 @@ async def lookup_valid_api_key(db, secret):
227229
Look up an API key. Ensure that it is valid.
228230
"""
229231

230-
now = datetime.now(UTC)
232+
now = datetime.now(timezone.utc)
231233
hashed_secret = hashlib.sha256(secret).digest()
232234
api_key = (
233235
await db.execute(
@@ -244,7 +246,7 @@ async def lookup_valid_api_key(db, secret):
244246
# No match
245247
validated_api_key = None
246248
elif (api_key.expiration_time is not None) and (
247-
api_key.expiration_time.replace(tzinfo=UTC) < now
249+
api_key.expiration_time.replace(tzinfo=timezone.utc) < now
248250
):
249251
# Match is expired. Delete it.
250252
await db.delete(api_key)

tiled/server/authentication.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import secrets
44
import uuid as uuid_module
55
import warnings
6-
from datetime import UTC, datetime, timedelta
6+
from datetime import datetime, timedelta, timezone
77
from pathlib import Path
88
from typing import Optional
99

@@ -83,7 +83,7 @@
8383

8484
def utcnow():
8585
"UTC now with second resolution"
86-
return datetime.now(UTC).replace(microsecond=0)
86+
return datetime.now(timezone.utc).replace(microsecond=0)
8787

8888

8989
class Mode(enum.Enum):
@@ -1041,7 +1041,7 @@ async def slide_session(refresh_token, settings, db):
10411041
if (
10421042
(session is None)
10431043
or session.revoked
1044-
or (session.expiration_time.replace(tzinfo=UTC) < now)
1044+
or (session.expiration_time.replace(tzinfo=timezone.utc) < now)
10451045
):
10461046
# Do not leak (to a potential attacker) whether this has been *revoked*
10471047
# specifically. Give the same error as if it had expired.

tiled/server/core.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import types
99
import uuid
1010
from collections import defaultdict
11-
from datetime import UTC, datetime, timedelta
11+
from datetime import datetime, timedelta, timezone
1212
from hashlib import md5
1313
from typing import Any
1414

@@ -225,7 +225,7 @@ async def construct_entries_response(
225225
keys = tree.keys()[offset : offset + limit] # noqa: E203
226226
items = [(key, None) for key in keys]
227227
# This value will not leak out. It just used to seed comparisons.
228-
metadata_stale_at = datetime.now(UTC) + timedelta(days=1_000_000)
228+
metadata_stale_at = datetime.now(timezone.utc) + timedelta(days=1_000_000)
229229
must_revalidate = getattr(tree, "must_revalidate", True)
230230
for key, entry in items:
231231
resource = await construct_resource(

tiled/server/router.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
import re
55
import warnings
6-
from datetime import UTC, datetime, timedelta
6+
from datetime import datetime, timedelta, timezone
77
from functools import partial
88
from pathlib import Path
99
from typing import Any, List, Optional
@@ -151,7 +151,7 @@ async def about(
151151
},
152152
meta={"root_path": request.scope.get("root_path") or "" + "/api"},
153153
).model_dump(),
154-
expires=datetime.now(UTC) + timedelta(seconds=600),
154+
expires=datetime.now(timezone.utc) + timedelta(seconds=600),
155155
)
156156

157157

0 commit comments

Comments
 (0)