summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViicos <65306057+Viicos@users.noreply.github.com>2023-01-03 14:22:28 +0100
committerGitHub <noreply@github.com>2023-01-03 19:22:28 +0600
commit45fff3ae19ae2930f92929e48d4ad45f41502f31 (patch)
treefda19685dac355ce8624fbfa35aabd2052e71439
parent701e8d9d3b8389e13ad6371a331e600b503c2550 (diff)
downloadpyjwt-45fff3ae19ae2930f92929e48d4ad45f41502f31.tar.gz
Add more types (#843)
* Add return types in `JWKSetCache` * Add types for hash algorithms * Add missing type annotation in `ECAlgorithm`
-rw-r--r--jwt/algorithms.py28
-rw-r--r--jwt/jwk_set_cache.py4
-rw-r--r--jwt/types.py4
3 files changed, 19 insertions, 17 deletions
diff --git a/jwt/algorithms.py b/jwt/algorithms.py
index c809f15..80d303c 100644
--- a/jwt/algorithms.py
+++ b/jwt/algorithms.py
@@ -1,10 +1,10 @@
import hashlib
import hmac
import json
-from typing import Any, Dict, Union
+from typing import Any, ClassVar, Dict, Type, Union
from .exceptions import InvalidKeyError
-from .types import JWKDict
+from .types import HashlibHash, JWKDict
from .utils import (
base64url_decode,
base64url_encode,
@@ -212,11 +212,11 @@ class HMACAlgorithm(Algorithm):
and the specified hash function.
"""
- SHA256 = hashlib.sha256
- SHA384 = hashlib.sha384
- SHA512 = hashlib.sha512
+ SHA256: ClassVar[HashlibHash] = hashlib.sha256
+ SHA384: ClassVar[HashlibHash] = hashlib.sha384
+ SHA512: ClassVar[HashlibHash] = hashlib.sha512
- def __init__(self, hash_alg) -> None:
+ def __init__(self, hash_alg: HashlibHash) -> None:
self.hash_alg = hash_alg
def prepare_key(self, key):
@@ -271,11 +271,11 @@ if has_crypto:
RSASSA-PKCS-v1_5 and the specified hash function.
"""
- SHA256 = hashes.SHA256
- SHA384 = hashes.SHA384
- SHA512 = hashes.SHA512
+ SHA256: ClassVar[Type[hashes.HashAlgorithm]] = hashes.SHA256
+ SHA384: ClassVar[Type[hashes.HashAlgorithm]] = hashes.SHA384
+ SHA512: ClassVar[Type[hashes.HashAlgorithm]] = hashes.SHA512
- def __init__(self, hash_alg) -> None:
+ def __init__(self, hash_alg: Type[hashes.HashAlgorithm]) -> None:
self.hash_alg = hash_alg
def prepare_key(self, key):
@@ -419,11 +419,11 @@ if has_crypto:
ECDSA and the specified hash function
"""
- SHA256 = hashes.SHA256
- SHA384 = hashes.SHA384
- SHA512 = hashes.SHA512
+ SHA256: ClassVar[Type[hashes.HashAlgorithm]] = hashes.SHA256
+ SHA384: ClassVar[Type[hashes.HashAlgorithm]] = hashes.SHA384
+ SHA512: ClassVar[Type[hashes.HashAlgorithm]] = hashes.SHA512
- def __init__(self, hash_alg) -> None:
+ def __init__(self, hash_alg: Type[hashes.HashAlgorithm]) -> None:
self.hash_alg = hash_alg
def prepare_key(self, key):
diff --git a/jwt/jwk_set_cache.py b/jwt/jwk_set_cache.py
index e8c2a7e..1b2465c 100644
--- a/jwt/jwk_set_cache.py
+++ b/jwt/jwk_set_cache.py
@@ -5,11 +5,11 @@ from .api_jwk import PyJWKSet, PyJWTSetWithTimestamp
class JWKSetCache:
- def __init__(self, lifespan: int):
+ def __init__(self, lifespan: int) -> None:
self.jwk_set_with_timestamp: Optional[PyJWTSetWithTimestamp] = None
self.lifespan = lifespan
- def put(self, jwk_set: PyJWKSet):
+ def put(self, jwk_set: PyJWKSet) -> None:
if jwk_set is not None:
self.jwk_set_with_timestamp = PyJWTSetWithTimestamp(jwk_set)
else:
diff --git a/jwt/types.py b/jwt/types.py
index 830b185..7d99352 100644
--- a/jwt/types.py
+++ b/jwt/types.py
@@ -1,3 +1,5 @@
-from typing import Any, Dict
+from typing import Any, Callable, Dict
JWKDict = Dict[str, Any]
+
+HashlibHash = Callable[..., Any]