--- /dev/null
+from datetime import datetime\r
+from itertools import izip\r
+from typing import Any, Callable, IO, MutableMapping, Optional, Text, Tuple, Union\r
+\r
+PY2 = ... # type: bool\r
+text_type = unicode\r
+int_to_byte = chr\r
+number_types = (int, long, float)\r
+_serializer = Any # must be an object that has "dumps" and "loads" attributes (e.g. the json module)\r
+\r
+bytes_like = Union[bytearray, str]\r
+\r
+class _CompactJSON:\r
+ def loads(self, payload: Text) -> Any: ...\r
+ def dumps(self, obj: Any) -> Text: ...\r
+\r
+compact_json = _CompactJSON\r
+EPOCH = ... # type: int\r
+\r
+def want_bytes(s: str, encoding: str = ..., errors: str = ...) -> bytes: ...\r
+def is_text_serializer(serializer: Any) -> bool: ...\r
+def constant_time_compare(val1: bytes_like, val2: bytes_like) -> bool: ...\r
+\r
+class BadData(Exception):\r
+ message = ... # type: str\r
+ def __init__(self, message: str) -> None: ...\r
+\r
+class BadPayload(BadData):\r
+ original_error = ... # type: Optional[Exception]\r
+ def __init__(self, message: str, original_error: Optional[Exception] = ...) -> None: ...\r
+\r
+class BadSignature(BadData):\r
+ payload = ... # type: Optional[Any]\r
+ def __init__(self, message: str, payload: Optional[Any] = ...) -> None: ...\r
+\r
+class BadTimeSignature(BadSignature):\r
+ date_signed = ... # type: Optional[int]\r
+ def __init__(self, message, payload: Optional[Any] = ..., date_signed: Optional[int] = ...) -> None: ...\r
+\r
+class BadHeader(BadSignature):\r
+ header = ... # type: Any\r
+ original_error = ... # type: Any\r
+ def __init__(self, message, payload=None, header=None, original_error=None) -> None: ...\r
+\r
+class SignatureExpired(BadTimeSignature): ...\r
+\r
+def base64_encode(string: bytes_like) -> bytes: ...\r
+def base64_decode(string: bytes_like) -> bytes: ...\r
+def int_to_bytes(num: int) -> bytes: ...\r
+def bytes_to_int(bytestr: bytes_like) -> bytes: ...\r
+\r
+class SigningAlgorithm:\r
+ def get_signature(self, key: bytes_like, value: bytes_like) -> bytes: ...\r
+ def verify_signature(self, key: bytes_like, value: bytes_like, sig: bytes_like) -> bool: ...\r
+\r
+class NoneAlgorithm(SigningAlgorithm):\r
+ def get_signature(self, key: bytes_like, value: bytes_like) -> str: ...\r
+\r
+class HMACAlgorithm(SigningAlgorithm):\r
+ default_digest_method = ... # type: Callable\r
+ digest_method = ... # type: Callable\r
+ def __init__(self, digest_method: Optional[Callable] = ...) -> None: ...\r
+ def get_signature(self, key: bytes_like, value: bytes_like) -> bytes: ...\r
+\r
+class Signer:\r
+ default_digest_method = ... # type: Callable\r
+ default_key_derivation = ... # type: str\r
+ secret_key = ... # type: bytes_like\r
+ sep = ... # type: str\r
+ salt = ... # type: bytes_like\r
+ key_derivation = ... # type: str\r
+ digest_method = ... # type: Callable\r
+ algorithm = ... # type: SigningAlgorithm\r
+ def __init__(self, secret_key: bytes_like, salt: Optional[bytes_like] = ..., sep: Optional[str] = ...,\r
+ key_derivation: Optional[str] = ...,\r
+ digest_method: Optional[Callable] = ...,\r
+ algorithm: Optional[SigningAlgorithm] = ...) -> None: ...\r
+ def derive_key(self) -> bytes: ...\r
+ def get_signature(self, value: bytes_like) -> bytes: ...\r
+ def sign(self, value: bytes_like) -> bytes: ...\r
+ def verify_signature(self, value: bytes_like, sig: bytes_like) -> bool: ...\r
+ def unsign(self, signed_value: str) -> str: ...\r
+ def validate(self, signed_value: str) -> bool: ...\r
+\r
+class TimestampSigner(Signer):\r
+ def get_timestamp(self) -> int: ...\r
+ def timestamp_to_datetime(self, ts: int) -> datetime: ...\r
+ def sign(self, value: bytes_like) -> bytes: ...\r
+ def unsign(self, value: str, max_age: Optional[int] = ..., return_timestamp: bool = ...) -> Any: ...\r
+ def validate(self, signed_value: str, max_age: Optional[int] = ...) -> bool: ...\r
+\r
+class Serializer:\r
+ default_serializer = ... # type: _serializer\r
+ default_signer = ... # type: Callable[..., Signer]\r
+ secret_key = ... # type: Any\r
+ salt = ... # type: bytes_like\r
+ serializer = ... # type: _serializer\r
+ is_text_serializer = ... # type: bool\r
+ signer = ... # type: Signer\r
+ signer_kwargs = ... # type: MutableMapping\r
+ def __init__(self, secret_key: bytes_like, salt: Optional[bytes_like] = ..., serializer: Optional[_serializer] = ..., signer: Optional[Callable[..., Signer]] = ..., signer_kwargs: Optional[MutableMapping] = ...) -> None: ...\r
+ def load_payload(self, payload: Any, serializer: Optional[_serializer] = ...) -> Any: ...\r
+ def dump_payload(self, *args, **kwargs) -> str: ...\r
+ def make_signer(self, salt: Optional[bytes_like] = ...) -> Signer: ...\r
+ def dumps(self, obj: Any, salt: Optional[bytes_like] = ...) -> str: ...\r
+ def dump(self, obj: Any, f: IO[str], salt: Optional[bytes_like] = ...) -> None: ...\r
+ def loads(self, s: str, salt: Optional[bytes_like] = ...) -> Any: ...\r
+ def load(self, f: IO[str], salt: Optional[bytes_like] = ...): ...\r
+ def loads_unsafe(self, s, salt: Optional[bytes_like] = ...) -> Tuple[bool, Any]: ...\r
+ def load_unsafe(self, f: IO[str], *args, **kwargs) -> Tuple[bool, Any]: ...\r
+\r
+class TimedSerializer(Serializer):\r
+ default_signer = ... # type: Callable[..., TimestampSigner]\r
+ def loads(self, s: str, salt: Optional[bytes_like] = ..., max_age: Optional[int] = ..., return_timestamp: bool = ...) -> Any: ...\r
+ def loads_unsafe(self, s: str, salt: Optional[bytes_like] = ..., max_age: Optional[int] = ...) -> Tuple[bool, Any]: ...\r
+\r
+class JSONWebSignatureSerializer(Serializer):\r
+ jws_algorithms = ... # type: MutableMapping[str, SigningAlgorithm]\r
+ default_algorithm = ... # type: str\r
+ default_serializer = ... # type: Any\r
+ algorithm_name = ... # type: str\r
+ algorithm = ... # type: Any\r
+ def __init__(self, secret_key: bytes_like, salt: Optional[bytes_like] = ..., serializer: Optional[_serializer] = ..., signer: Optional[Callable[..., Signer]] = ..., signer_kwargs: Optional[MutableMapping] = ..., algorithm_name: Optional[str] = ...) -> None: ...\r
+ def load_payload(self, payload: Any, serializer: Optional[_serializer] = ..., return_header: bool = ...) -> Any: ...\r
+ def dump_payload(self, *args, **kwargs) -> bytes: ...\r
+ def make_algorithm(self, algorithm_name: str) -> SigningAlgorithm: ...\r
+ def make_signer(self, salt: Optional[bytes_like] = ..., algorithm_name: Optional[str] = ...) -> Signer: ...\r
+ def make_header(self, header_fields: Optional[MutableMapping] = ...) -> MutableMapping: ...\r
+ def dumps(self, obj: Any, salt: Optional[bytes_like] = ..., header_fields: Optional[MutableMapping] = ...) -> str: ...\r
+ def loads(self, s: str, salt: Optional[bytes_like] = ..., return_header: bool = ...) -> Any: ...\r
+ def loads_unsafe(self, s, salt: Optional[bytes_like] = ..., return_header: bool = ...) -> Tuple[bool, Any]: ...\r
+\r
+class TimedJSONWebSignatureSerializer(JSONWebSignatureSerializer):\r
+ DEFAULT_EXPIRES_IN = ... # type: int\r
+ expires_in = ... # type: int\r
+ def __init__(self, secret_key: bytes_like, expires_in: Optional[int] = ..., **kwargs) -> None: ...\r
+ def make_header(self, header_fields=Optional[MutableMapping]) -> MutableMapping: ...\r
+ def loads(self, s: str, salt: Optional[bytes_like] = ..., return_header: bool = ...) -> Any: ...\r
+ def get_issue_date(self, header: MutableMapping) -> Optional[datetime]: ...\r
+ def now(self) -> int: ...\r
+\r
+class URLSafeSerializerMixin:\r
+ def load_payload(self, payload: Any, serializer=None, return_header=False, **kwargs) -> Any: ... # FIXME: This is invalid but works around https://github.com/pallets/itsdangerous/issues/74\r
+ def dump_payload(self, *args, **kwargs) -> str: ...\r
+\r
+class URLSafeSerializer(URLSafeSerializerMixin, Serializer):\r
+ default_serializer = ... # type: Any\r
+\r
+class URLSafeTimedSerializer(URLSafeSerializerMixin, TimedSerializer):\r
+ default_serializer = ... # type: Any\r