Made an application for supporting sustainable local businesses in San Pancho.
Never really got completed, but it has some useful Svelte components for maps that we can reuse.
http://greenspots.dctrl.space
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.1 KiB
107 lines
3.1 KiB
import typing as _t |
|
from datetime import datetime |
|
|
|
_t_opt_any = _t.Optional[_t.Any] |
|
_t_opt_exc = _t.Optional[Exception] |
|
|
|
|
|
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_opt_any = 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_opt_any = 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_opt_any = None, |
|
date_signed: _t.Optional[datetime] = 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_opt_any = None, |
|
header: _t_opt_any = None, |
|
original_error: _t_opt_exc = None, |
|
): |
|
super().__init__(message, payload) |
|
|
|
#: If the header is actually available but just malformed it |
|
#: might be stored here. |
|
self.header: _t_opt_any = header |
|
|
|
#: If available, the error that indicates why the payload was |
|
#: not valid. This might be ``None``. |
|
self.original_error: _t_opt_exc = 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: _t_opt_exc = None): |
|
super().__init__(message) |
|
|
|
#: If available, the error that indicates why the payload was |
|
#: not valid. This might be ``None``. |
|
self.original_error: _t_opt_exc = original_error
|
|
|