From 9155ec999865082222ec44788498d0ca743cb343 Mon Sep 17 00:00:00 2001 From: Marcin Bodych Date: Sun, 23 Apr 2023 06:35:55 +0200 Subject: [PATCH 1/6] Update typing.py cleaned up ExpiresDelta type definition and added Fresh type --- flask_jwt_extended/typing.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/flask_jwt_extended/typing.py b/flask_jwt_extended/typing.py index 8bb0f690..f4ccd0be 100644 --- a/flask_jwt_extended/typing.py +++ b/flask_jwt_extended/typing.py @@ -1,5 +1,5 @@ import sys -from typing import Any +from datetime import timedelta from typing import Union if sys.version_info >= (3, 8): @@ -7,4 +7,5 @@ else: from typing_extensions import Literal # pragma: no cover -ExpiresDelta = Union[Literal[False], Any] +ExpiresDelta = Union[Literal[False], timedelta] +Fresh = Union[bool, timedelta] From c0320b5e1a337e5d4a9826d48aca9862339c6576 Mon Sep 17 00:00:00 2001 From: Marcin Bodych Date: Sun, 23 Apr 2023 06:41:32 +0200 Subject: [PATCH 2/6] Update utils.py updated typing for `expires_delta` and `fresh` --- flask_jwt_extended/utils.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/flask_jwt_extended/utils.py b/flask_jwt_extended/utils.py index 3527fe88..3b513b15 100644 --- a/flask_jwt_extended/utils.py +++ b/flask_jwt_extended/utils.py @@ -1,4 +1,3 @@ -import datetime from typing import Any from typing import Optional @@ -9,6 +8,8 @@ from flask_jwt_extended.config import config from flask_jwt_extended.internal_utils import get_jwt_manager +from flask_jwt_extended.typing import ExpiresDelta +from flask_jwt_extended.typing import Fresh # Proxy to access the current user current_user: Any = LocalProxy(lambda: get_current_user()) @@ -129,8 +130,8 @@ def decode_token( def create_access_token( identity: Any, - fresh: bool = False, - expires_delta: Optional[datetime.timedelta] = None, + fresh: Fresh = False, + expires_delta: Optional[ExpiresDelta] = None, additional_claims=None, additional_headers=None, ): @@ -183,7 +184,7 @@ def create_access_token( def create_refresh_token( identity: Any, - expires_delta: Optional[datetime.timedelta] = None, + expires_delta: Optional[ExpiresDelta] = None, additional_claims=None, additional_headers=None, ): From c2ac8eda03642116dbc0e100d095318da6ac65b6 Mon Sep 17 00:00:00 2001 From: Marcin Bodych Date: Sun, 23 Apr 2023 06:43:16 +0200 Subject: [PATCH 3/6] Update jwt_manager.py updated typing of `fresh` --- flask_jwt_extended/jwt_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flask_jwt_extended/jwt_manager.py b/flask_jwt_extended/jwt_manager.py index f81963f8..dfe45e0b 100644 --- a/flask_jwt_extended/jwt_manager.py +++ b/flask_jwt_extended/jwt_manager.py @@ -42,6 +42,7 @@ from flask_jwt_extended.tokens import _decode_jwt from flask_jwt_extended.tokens import _encode_jwt from flask_jwt_extended.typing import ExpiresDelta +from flask_jwt_extended.typing import Fresh from flask_jwt_extended.utils import current_user_context_processor @@ -493,7 +494,7 @@ def _encode_jwt_from_config( identity: Any, token_type: str, claims=None, - fresh: bool = False, + fresh: Fresh = False, expires_delta: Optional[ExpiresDelta] = None, headers=None, ) -> str: From 28d2aef757df8bcdee132c2f2fa2f1d69e433782 Mon Sep 17 00:00:00 2001 From: Marcin Bodych Date: Sun, 23 Apr 2023 06:45:22 +0200 Subject: [PATCH 4/6] Update tokens.py updated typing for `fresh` --- flask_jwt_extended/tokens.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_jwt_extended/tokens.py b/flask_jwt_extended/tokens.py index 9a600a8e..c89ab376 100644 --- a/flask_jwt_extended/tokens.py +++ b/flask_jwt_extended/tokens.py @@ -23,7 +23,7 @@ def _encode_jwt( claim_overrides: dict, csrf: bool, expires_delta: ExpiresDelta, - fresh: bool, + fresh: Fresh, header_overrides: dict, identity: Any, identity_claim_key: str, From 48e2e0fc9512e0755f354a28906f5e77872891c8 Mon Sep 17 00:00:00 2001 From: Marcin Bodych Date: Sun, 23 Apr 2023 19:54:13 +0200 Subject: [PATCH 5/6] Update tokens.py added missing import --- flask_jwt_extended/tokens.py | 1 + 1 file changed, 1 insertion(+) diff --git a/flask_jwt_extended/tokens.py b/flask_jwt_extended/tokens.py index c89ab376..e570114f 100644 --- a/flask_jwt_extended/tokens.py +++ b/flask_jwt_extended/tokens.py @@ -15,6 +15,7 @@ from flask_jwt_extended.exceptions import CSRFError from flask_jwt_extended.exceptions import JWTDecodeError from flask_jwt_extended.typing import ExpiresDelta +from flask_jwt_extended.typing import Fresh def _encode_jwt( From 78ee37137aa57e7b5cc8d35f05150f0f0c0030d0 Mon Sep 17 00:00:00 2001 From: Marcin Bodych Date: Sat, 13 May 2023 07:04:08 +0200 Subject: [PATCH 6/6] Update typing.py float type is required while building the token_data dict in _encode_jwt --- flask_jwt_extended/typing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flask_jwt_extended/typing.py b/flask_jwt_extended/typing.py index f4ccd0be..36e15fa8 100644 --- a/flask_jwt_extended/typing.py +++ b/flask_jwt_extended/typing.py @@ -8,4 +8,4 @@ from typing_extensions import Literal # pragma: no cover ExpiresDelta = Union[Literal[False], timedelta] -Fresh = Union[bool, timedelta] +Fresh = Union[bool, float, timedelta]