Add typing information

pull/34/head
Andrey Kislyuk 2022-04-19 11:39:09 -07:00
parent 83abe85c81
commit 198e2dae5c
No known key found for this signature in database
GPG Key ID: 8AFAFCD242818A52
4 changed files with 12 additions and 8 deletions

View File

@ -2,6 +2,7 @@ SHELL=/bin/bash
lint: lint:
flake8 flake8
mypy requests_http_signature
test: lint test: lint
python ./test/test.py -v python ./test/test.py -v

View File

@ -2,7 +2,7 @@ import datetime
import email.utils import email.utils
import hashlib import hashlib
import secrets import secrets
from typing import List, Union from typing import Union, Sequence, Type
import http_sfv import http_sfv
import requests import requests
@ -10,7 +10,7 @@ import requests
from requests.exceptions import RequestException from requests.exceptions import RequestException
from http_message_signatures import (algorithms, HTTPSignatureComponentResolver, HTTPSignatureKeyResolver, # noqa: F401 from http_message_signatures import (algorithms, HTTPSignatureComponentResolver, HTTPSignatureKeyResolver, # noqa: F401
HTTPMessageSigner, HTTPMessageVerifier, HTTPSignatureAlgorithm, InvalidSignature) HTTPMessageSigner, HTTPMessageVerifier, HTTPSignatureAlgorithm, InvalidSignature)
from http_message_signatures.structures import CaseInsensitiveDict from http_message_signatures.structures import CaseInsensitiveDict, VerifyResult
class RequestsHttpSignatureException(RequestException): class RequestsHttpSignatureException(RequestException):
@ -84,11 +84,11 @@ class HTTPSignatureAuth(requests.auth.AuthBase):
_auto_cover_header_fields = {"authorization", "content-digest", "date"} _auto_cover_header_fields = {"authorization", "content-digest", "date"}
def __init__(self, *, def __init__(self, *,
signature_algorithm: HTTPSignatureAlgorithm, signature_algorithm: Type[HTTPSignatureAlgorithm],
key: bytes = None, key: bytes = None,
key_id: str, key_id: str,
key_resolver: HTTPSignatureKeyResolver = None, 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, label: str = None,
include_alg: bool = True, include_alg: bool = True,
use_nonce: bool = False, use_nonce: bool = False,
@ -168,10 +168,10 @@ class HTTPSignatureAuth(requests.auth.AuthBase):
@classmethod @classmethod
def verify(cls, message: Union[requests.PreparedRequest, requests.Response], *, def verify(cls, message: Union[requests.PreparedRequest, requests.Response], *,
require_components: List[str] = ("@method", "@authority", "@target-uri"), require_components: Sequence[str] = ("@method", "@authority", "@target-uri"),
signature_algorithm: HTTPSignatureAlgorithm, signature_algorithm: Type[HTTPSignatureAlgorithm],
key_resolver: HTTPSignatureKeyResolver, 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. Verify an HTTP message signature.

View File

View File

@ -15,7 +15,7 @@ setup(
}, },
setup_requires=['setuptools_scm >= 3.4.3'], setup_requires=['setuptools_scm >= 3.4.3'],
install_requires=[ install_requires=[
"http-message-signatures >= 0.4.0", "http-message-signatures >= 0.4.3",
"http-sfv >= 0.9.3", "http-sfv >= 0.9.3",
"requests >= 2.25.1" "requests >= 2.25.1"
], ],
@ -30,6 +30,9 @@ setup(
}, },
packages=find_packages(exclude=['test']), packages=find_packages(exclude=['test']),
include_package_data=True, include_package_data=True,
package_data={
"http_message_signatures": ["py.typed"],
},
platforms=['MacOS X', 'Posix'], platforms=['MacOS X', 'Posix'],
test_suite='test', test_suite='test',
classifiers=[ classifiers=[