From 198e2dae5c253f471fa66759f77cea600c0a8fb9 Mon Sep 17 00:00:00 2001 From: Andrey Kislyuk Date: Tue, 19 Apr 2022 11:39:09 -0700 Subject: [PATCH] Add typing information --- Makefile | 1 + requests_http_signature/__init__.py | 14 +++++++------- requests_http_signature/py.typed | 0 setup.py | 5 ++++- 4 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 requests_http_signature/py.typed diff --git a/Makefile b/Makefile index 84bef37..053e782 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ SHELL=/bin/bash lint: flake8 + mypy requests_http_signature test: lint python ./test/test.py -v diff --git a/requests_http_signature/__init__.py b/requests_http_signature/__init__.py index 78694cc..0905c36 100644 --- a/requests_http_signature/__init__.py +++ b/requests_http_signature/__init__.py @@ -2,7 +2,7 @@ import datetime import email.utils import hashlib import secrets -from typing import List, Union +from typing import Union, Sequence, Type import http_sfv import requests @@ -10,7 +10,7 @@ import requests from requests.exceptions import RequestException from http_message_signatures import (algorithms, HTTPSignatureComponentResolver, HTTPSignatureKeyResolver, # noqa: F401 HTTPMessageSigner, HTTPMessageVerifier, HTTPSignatureAlgorithm, InvalidSignature) -from http_message_signatures.structures import CaseInsensitiveDict +from http_message_signatures.structures import CaseInsensitiveDict, VerifyResult class RequestsHttpSignatureException(RequestException): @@ -84,11 +84,11 @@ class HTTPSignatureAuth(requests.auth.AuthBase): _auto_cover_header_fields = {"authorization", "content-digest", "date"} def __init__(self, *, - signature_algorithm: HTTPSignatureAlgorithm, + signature_algorithm: Type[HTTPSignatureAlgorithm], key: bytes = None, key_id: str, key_resolver: HTTPSignatureKeyResolver = None, - covered_component_ids: List[str] = ("@method", "@authority", "@target-uri"), + covered_component_ids: Sequence[str] = ("@method", "@authority", "@target-uri"), label: str = None, include_alg: bool = True, use_nonce: bool = False, @@ -168,10 +168,10 @@ class HTTPSignatureAuth(requests.auth.AuthBase): @classmethod def verify(cls, message: Union[requests.PreparedRequest, requests.Response], *, - require_components: List[str] = ("@method", "@authority", "@target-uri"), - signature_algorithm: HTTPSignatureAlgorithm, + require_components: Sequence[str] = ("@method", "@authority", "@target-uri"), + signature_algorithm: Type[HTTPSignatureAlgorithm], key_resolver: HTTPSignatureKeyResolver, - max_age: datetime.timedelta = datetime.timedelta(days=1)): + max_age: datetime.timedelta = datetime.timedelta(days=1)) -> VerifyResult: """ Verify an HTTP message signature. diff --git a/requests_http_signature/py.typed b/requests_http_signature/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/setup.py b/setup.py index 7bc1669..973fc42 100755 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ setup( }, setup_requires=['setuptools_scm >= 3.4.3'], install_requires=[ - "http-message-signatures >= 0.4.0", + "http-message-signatures >= 0.4.3", "http-sfv >= 0.9.3", "requests >= 2.25.1" ], @@ -30,6 +30,9 @@ setup( }, packages=find_packages(exclude=['test']), include_package_data=True, + package_data={ + "http_message_signatures": ["py.typed"], + }, platforms=['MacOS X', 'Posix'], test_suite='test', classifiers=[