Загрузить файлы в «venv/Lib/site-packages/itsdangerous»
This commit is contained in:
38
venv/Lib/site-packages/itsdangerous/__init__.py
Normal file
38
venv/Lib/site-packages/itsdangerous/__init__.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import typing as t
|
||||||
|
|
||||||
|
from .encoding import base64_decode as base64_decode
|
||||||
|
from .encoding import base64_encode as base64_encode
|
||||||
|
from .encoding import want_bytes as want_bytes
|
||||||
|
from .exc import BadData as BadData
|
||||||
|
from .exc import BadHeader as BadHeader
|
||||||
|
from .exc import BadPayload as BadPayload
|
||||||
|
from .exc import BadSignature as BadSignature
|
||||||
|
from .exc import BadTimeSignature as BadTimeSignature
|
||||||
|
from .exc import SignatureExpired as SignatureExpired
|
||||||
|
from .serializer import Serializer as Serializer
|
||||||
|
from .signer import HMACAlgorithm as HMACAlgorithm
|
||||||
|
from .signer import NoneAlgorithm as NoneAlgorithm
|
||||||
|
from .signer import Signer as Signer
|
||||||
|
from .timed import TimedSerializer as TimedSerializer
|
||||||
|
from .timed import TimestampSigner as TimestampSigner
|
||||||
|
from .url_safe import URLSafeSerializer as URLSafeSerializer
|
||||||
|
from .url_safe import URLSafeTimedSerializer as URLSafeTimedSerializer
|
||||||
|
|
||||||
|
|
||||||
|
def __getattr__(name: str) -> t.Any:
|
||||||
|
if name == "__version__":
|
||||||
|
import importlib.metadata
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
warnings.warn(
|
||||||
|
"The '__version__' attribute is deprecated and will be removed in"
|
||||||
|
" ItsDangerous 2.3. Use feature detection or"
|
||||||
|
" 'importlib.metadata.version(\"itsdangerous\")' instead.",
|
||||||
|
DeprecationWarning,
|
||||||
|
stacklevel=2,
|
||||||
|
)
|
||||||
|
return importlib.metadata.version("itsdangerous")
|
||||||
|
|
||||||
|
raise AttributeError(name)
|
||||||
18
venv/Lib/site-packages/itsdangerous/_json.py
Normal file
18
venv/Lib/site-packages/itsdangerous/_json.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json as _json
|
||||||
|
import typing as t
|
||||||
|
|
||||||
|
|
||||||
|
class _CompactJSON:
|
||||||
|
"""Wrapper around json module that strips whitespace."""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def loads(payload: str | bytes) -> t.Any:
|
||||||
|
return _json.loads(payload)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def dumps(obj: t.Any, **kwargs: t.Any) -> str:
|
||||||
|
kwargs.setdefault("ensure_ascii", False)
|
||||||
|
kwargs.setdefault("separators", (",", ":"))
|
||||||
|
return _json.dumps(obj, **kwargs)
|
||||||
54
venv/Lib/site-packages/itsdangerous/encoding.py
Normal file
54
venv/Lib/site-packages/itsdangerous/encoding.py
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import string
|
||||||
|
import struct
|
||||||
|
import typing as t
|
||||||
|
|
||||||
|
from .exc import BadData
|
||||||
|
|
||||||
|
|
||||||
|
def want_bytes(
|
||||||
|
s: str | bytes, encoding: str = "utf-8", errors: str = "strict"
|
||||||
|
) -> bytes:
|
||||||
|
if isinstance(s, str):
|
||||||
|
s = s.encode(encoding, errors)
|
||||||
|
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
|
def base64_encode(string: str | bytes) -> bytes:
|
||||||
|
"""Base64 encode a string of bytes or text. The resulting bytes are
|
||||||
|
safe to use in URLs.
|
||||||
|
"""
|
||||||
|
string = want_bytes(string)
|
||||||
|
return base64.urlsafe_b64encode(string).rstrip(b"=")
|
||||||
|
|
||||||
|
|
||||||
|
def base64_decode(string: str | bytes) -> bytes:
|
||||||
|
"""Base64 decode a URL-safe string of bytes or text. The result is
|
||||||
|
bytes.
|
||||||
|
"""
|
||||||
|
string = want_bytes(string, encoding="ascii", errors="ignore")
|
||||||
|
string += b"=" * (-len(string) % 4)
|
||||||
|
|
||||||
|
try:
|
||||||
|
return base64.urlsafe_b64decode(string)
|
||||||
|
except (TypeError, ValueError) as e:
|
||||||
|
raise BadData("Invalid base64-encoded data") from e
|
||||||
|
|
||||||
|
|
||||||
|
# The alphabet used by base64.urlsafe_*
|
||||||
|
_base64_alphabet = f"{string.ascii_letters}{string.digits}-_=".encode("ascii")
|
||||||
|
|
||||||
|
_int64_struct = struct.Struct(">Q")
|
||||||
|
_int_to_bytes = _int64_struct.pack
|
||||||
|
_bytes_to_int = t.cast("t.Callable[[bytes], tuple[int]]", _int64_struct.unpack)
|
||||||
|
|
||||||
|
|
||||||
|
def int_to_bytes(num: int) -> bytes:
|
||||||
|
return _int_to_bytes(num).lstrip(b"\x00")
|
||||||
|
|
||||||
|
|
||||||
|
def bytes_to_int(bytestr: bytes) -> int:
|
||||||
|
return _bytes_to_int(bytestr.rjust(8, b"\x00"))[0]
|
||||||
106
venv/Lib/site-packages/itsdangerous/exc.py
Normal file
106
venv/Lib/site-packages/itsdangerous/exc.py
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import typing as t
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
class BadData(Exception):
|
||||||
|
"""Raised if bad data of any sort was encountered. This is the base
|
||||||
|
for all exceptions that ItsDangerous defines.
|
||||||
|
|
||||||
|
.. versionadded:: 0.15
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, message: str):
|
||||||
|
super().__init__(message)
|
||||||
|
self.message = message
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return self.message
|
||||||
|
|
||||||
|
|
||||||
|
class BadSignature(BadData):
|
||||||
|
"""Raised if a signature does not match."""
|
||||||
|
|
||||||
|
def __init__(self, message: str, payload: t.Any | None = None):
|
||||||
|
super().__init__(message)
|
||||||
|
|
||||||
|
#: The payload that failed the signature test. In some
|
||||||
|
#: situations you might still want to inspect this, even if
|
||||||
|
#: you know it was tampered with.
|
||||||
|
#:
|
||||||
|
#: .. versionadded:: 0.14
|
||||||
|
self.payload: t.Any | None = payload
|
||||||
|
|
||||||
|
|
||||||
|
class BadTimeSignature(BadSignature):
|
||||||
|
"""Raised if a time-based signature is invalid. This is a subclass
|
||||||
|
of :class:`BadSignature`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
message: str,
|
||||||
|
payload: t.Any | None = None,
|
||||||
|
date_signed: datetime | None = None,
|
||||||
|
):
|
||||||
|
super().__init__(message, payload)
|
||||||
|
|
||||||
|
#: If the signature expired this exposes the date of when the
|
||||||
|
#: signature was created. This can be helpful in order to
|
||||||
|
#: tell the user how long a link has been gone stale.
|
||||||
|
#:
|
||||||
|
#: .. versionchanged:: 2.0
|
||||||
|
#: The datetime value is timezone-aware rather than naive.
|
||||||
|
#:
|
||||||
|
#: .. versionadded:: 0.14
|
||||||
|
self.date_signed = date_signed
|
||||||
|
|
||||||
|
|
||||||
|
class SignatureExpired(BadTimeSignature):
|
||||||
|
"""Raised if a signature timestamp is older than ``max_age``. This
|
||||||
|
is a subclass of :exc:`BadTimeSignature`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class BadHeader(BadSignature):
|
||||||
|
"""Raised if a signed header is invalid in some form. This only
|
||||||
|
happens for serializers that have a header that goes with the
|
||||||
|
signature.
|
||||||
|
|
||||||
|
.. versionadded:: 0.24
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
message: str,
|
||||||
|
payload: t.Any | None = None,
|
||||||
|
header: t.Any | None = None,
|
||||||
|
original_error: Exception | None = None,
|
||||||
|
):
|
||||||
|
super().__init__(message, payload)
|
||||||
|
|
||||||
|
#: If the header is actually available but just malformed it
|
||||||
|
#: might be stored here.
|
||||||
|
self.header: t.Any | None = header
|
||||||
|
|
||||||
|
#: If available, the error that indicates why the payload was
|
||||||
|
#: not valid. This might be ``None``.
|
||||||
|
self.original_error: Exception | None = original_error
|
||||||
|
|
||||||
|
|
||||||
|
class BadPayload(BadData):
|
||||||
|
"""Raised if a payload is invalid. This could happen if the payload
|
||||||
|
is loaded despite an invalid signature, or if there is a mismatch
|
||||||
|
between the serializer and deserializer. The original exception
|
||||||
|
that occurred during loading is stored on as :attr:`original_error`.
|
||||||
|
|
||||||
|
.. versionadded:: 0.15
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, message: str, original_error: Exception | None = None):
|
||||||
|
super().__init__(message)
|
||||||
|
|
||||||
|
#: If available, the error that indicates why the payload was
|
||||||
|
#: not valid. This might be ``None``.
|
||||||
|
self.original_error: Exception | None = original_error
|
||||||
BIN
venv/Lib/site-packages/itsdangerous/py.typed
Normal file
BIN
venv/Lib/site-packages/itsdangerous/py.typed
Normal file
Binary file not shown.
Reference in New Issue
Block a user