From 72e00df86254507a92d7e0d1a165109e6a4d48c6 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Fri, 21 Feb 2025 12:48:33 +0300 Subject: [PATCH 1/5] Do not use `utc_now` on module level Looks like that this value is never used anywhere, and it should not be, because it is created once on a module import time. I found this while working on https://github.com/python/typeshed/pull/13514 --- jose/jwt.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/jose/jwt.py b/jose/jwt.py index 80565f5..4a860ee 100644 --- a/jose/jwt.py +++ b/jose/jwt.py @@ -1,5 +1,6 @@ import json from calendar import timegm +from datetime import datetime, timedelta try: from collections.abc import Mapping @@ -7,14 +8,10 @@ from collections import Mapping try: - from datetime import UTC, datetime, timedelta - - utc_now = datetime.now(UTC) # Preferred in Python 3.13+ + from datetime import UTC # Preferred in Python 3.13+ except ImportError: from datetime import datetime, timedelta, timezone - - utc_now = datetime.now(timezone.utc) # Preferred in Python 3.12 and below - UTC = timezone.utc + UTC = timezone.utc # Preferred in Python 3.12 and below from jose import jws From 3af0a8da423515aff899f166bae0ac6309edec2f Mon Sep 17 00:00:00 2001 From: sobolevn Date: Fri, 21 Feb 2025 12:52:16 +0300 Subject: [PATCH 2/5] Fix tests as well --- tests/test_jwt.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/test_jwt.py b/tests/test_jwt.py index 33798d0..1e4a16c 100644 --- a/tests/test_jwt.py +++ b/tests/test_jwt.py @@ -1,14 +1,11 @@ import base64 import json +from datetime import datetime, timedelta try: - from datetime import UTC, datetime, timedelta - - utc_now = datetime.now(UTC) # Preferred in Python 3.13+ + from datetime import UTC # Preferred in Python 3.13+ except ImportError: - from datetime import datetime, timedelta, timezone - - utc_now = datetime.now(timezone.utc) # Preferred in Python 3.12 and below + from datetime import timezone # Preferred in Python 3.12 and below UTC = timezone.utc @@ -514,14 +511,16 @@ def test_unverified_claims_object(self, claims, key): [ ("aud", "aud"), ("ait", "ait"), - ("exp", utc_now + timedelta(seconds=3600)), - ("nbf", utc_now - timedelta(seconds=5)), + ("exp", lambda: datetime.now(UTC) + timedelta(seconds=3600)), + ("nbf", lambda: datetime.now(UTC) - timedelta(seconds=5)), ("iss", "iss"), ("sub", "sub"), ("jti", "jti"), ], ) def test_require(self, claims, key, claim, value): + if callable(value): + value = value() options = {"require_" + claim: True, "verify_" + claim: False} token = jwt.encode(claims, key) From a0f7dce7d0e2bdeafe63e01071059b465a7acc1c Mon Sep 17 00:00:00 2001 From: Asher Foa Date: Wed, 28 May 2025 12:32:55 -0400 Subject: [PATCH 3/5] fix lint import issue --- jose/jwt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jose/jwt.py b/jose/jwt.py index 4a860ee..2e19cdd 100644 --- a/jose/jwt.py +++ b/jose/jwt.py @@ -10,7 +10,7 @@ try: from datetime import UTC # Preferred in Python 3.13+ except ImportError: - from datetime import datetime, timedelta, timezone + from datetime import timezone UTC = timezone.utc # Preferred in Python 3.12 and below from jose import jws From 85f95441711719ac315743436449c3b202c8cfc7 Mon Sep 17 00:00:00 2001 From: Asher Foa Date: Wed, 28 May 2025 12:36:11 -0400 Subject: [PATCH 4/5] try to fix black lint errors --- jose/jwt.py | 4 ++-- tests/test_jwt.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/jose/jwt.py b/jose/jwt.py index 2e19cdd..82d2304 100644 --- a/jose/jwt.py +++ b/jose/jwt.py @@ -8,10 +8,10 @@ from collections import Mapping try: - from datetime import UTC # Preferred in Python 3.13+ + from datetime import UTC # Preferred in Python 3.13+ except ImportError: from datetime import timezone - UTC = timezone.utc # Preferred in Python 3.12 and below + UTC = timezone.utc # Preferred in Python 3.12 and below from jose import jws diff --git a/tests/test_jwt.py b/tests/test_jwt.py index 1e4a16c..5ae9593 100644 --- a/tests/test_jwt.py +++ b/tests/test_jwt.py @@ -8,7 +8,6 @@ from datetime import timezone # Preferred in Python 3.12 and below UTC = timezone.utc - import pytest from jose import jws, jwt From ed27cdb11d8fd94a126ef2e165be0bc8d993c26d Mon Sep 17 00:00:00 2001 From: Asher Foa Date: Wed, 28 May 2025 12:45:08 -0400 Subject: [PATCH 5/5] fix again --- jose/jwt.py | 5 +++-- tests/test_jwt.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jose/jwt.py b/jose/jwt.py index 82d2304..dc6092c 100644 --- a/jose/jwt.py +++ b/jose/jwt.py @@ -8,10 +8,11 @@ from collections import Mapping try: - from datetime import UTC # Preferred in Python 3.13+ + from datetime import UTC # Preferred in Python 3.13+ except ImportError: from datetime import timezone - UTC = timezone.utc # Preferred in Python 3.12 and below + + UTC = timezone.utc # Preferred in Python 3.12 and below from jose import jws diff --git a/tests/test_jwt.py b/tests/test_jwt.py index 5ae9593..f9d54cd 100644 --- a/tests/test_jwt.py +++ b/tests/test_jwt.py @@ -6,6 +6,7 @@ from datetime import UTC # Preferred in Python 3.13+ except ImportError: from datetime import timezone # Preferred in Python 3.12 and below + UTC = timezone.utc import pytest