/usr/local/lib/python3.6/site-packages/itsdangerous/__pycache__
Edit: /usr/local/lib/python3.6/site-packages/itsdangerous/__pycache__/serializer.cpython-36.pyc (9515B)
3
_TBg+ @ s d dl Z d dlZddlmZ ddlmZ ddlmZ ddlm Z ddlm
Z
ejee
f Zeje Zejeejf Zeje Zeje
Zejejeejeef ef Zejeejf Zejeje ef Zejedd d
ZG dd dZdS )
N )
want_bytes)
BadPayload)BadSignature)_make_keys_list)Signer)
serializerreturnc C s t | ji tS )z5Checks whether a serializer generates text or binary.)
isinstancedumpsstr)r r
?/tmp/pip-build-0s3hx122/itsdangerous/itsdangerous/serializer.pyis_text_serializer s r c @ sf e Zd ZU dZeZejeZ e
g Zed)e
eejeeje
eeje dddZeeddd Zd*eejej ejd
ddZejed
ddZd+eedddZd,eeje dddZd-ejeedddZd.ejejeddddZd/eeejejdddZd0ejeejddd Zd1eee d!d"d#Z!d2eeeee d$d%d&Z"d3ejee dd'd(Z#dS )4
Serializera: A serializer wraps a :class:`~itsdangerous.signer.Signer` to
enable serializing and securely signing data other than bytes. It
can unsign to verify that the data hasn't been changed.
The serializer provides :meth:`dumps` and :meth:`loads`, similar to
:mod:`json`, and by default uses :mod:`json` internally to serialize
the data to bytes.
The secret key should be a random string of ``bytes`` and should not
be saved to code or version control. Different salts should be used
to distinguish signing in different contexts. See :doc:`/concepts`
for information about the security of the secret key and salt.
:param secret_key: The secret key to sign and verify with. Can be a
list of keys, oldest to newest, to support key rotation.
:param salt: Extra key to combine with ``secret_key`` to distinguish
signatures in different contexts.
:param serializer: An object that provides ``dumps`` and ``loads``
methods for serializing data to a string. Defaults to
:attr:`default_serializer`, which defaults to :mod:`json`.
:param serializer_kwargs: Keyword arguments to pass when calling
``serializer.dumps``.
:param signer: A ``Signer`` class to instantiate when signing data.
Defaults to :attr:`default_signer`, which defaults to
:class:`~itsdangerous.signer.Signer`.
:param signer_kwargs: Keyword arguments to pass when instantiating
the ``Signer`` class.
:param fallback_signers: List of signer parameters to try when
unsigning with the default signer fails. Each item can be a dict
of ``signer_kwargs``, a ``Signer`` class, or a tuple of
``(signer, signer_kwargs)``. Defaults to
:attr:`default_fallback_signers`.
.. versionchanged:: 2.0
Added support for key rotation by passing a list to
``secret_key``.
.. versionchanged:: 2.0
Removed the default SHA-512 fallback signer from
``default_fallback_signers``.
.. versionchanged:: 1.1
Added support for ``fallback_signers`` and configured a default
SHA-512 fallback. This fallback is for users who used the yanked
1.0.0 release which defaulted to SHA-512.
.. versionchanged:: 0.14
The ``signer`` and ``signer_kwargs`` parameters were added to
the constructor.
itsdangerousN)
secret_keysaltr serializer_kwargssigner
signer_kwargsfallback_signersc C s t || _|d k rt|}|| _|d kr.| j}|| _t|| _|d krL| j}|| _|pXi | _ |d krrt
| jpnf }|| _|p~i | _
d S )N)r secret_keysr r default_serializerr r default_signerr r listdefault_fallback_signersr r )selfr r r r r r r r
r
r __init__Y s
zSerializer.__init__)r c C s
| j d S )zThe newest (last) entry in the :attr:`secret_keys` list. This
is for compatibility from before key rotation support was added.
r )r )r r
r
r r s zSerializer.secret_key)payloadr r c C sp |dkr| j }| j}nt|}y|r4|j|jdS |j|S tk
rj } ztd|dW Y dd}~X nX dS )a Loads the encoded object. This function raises
:class:`.BadPayload` if the payload is not valid. The
``serializer`` parameter can be used to override the serializer
stored on the class. The encoded ``payload`` should always be
bytes.
Nzutf-8zSCould not load the payload because an exception occurred on unserializing the data.)original_error)r r loadsdecode Exceptionr )r r r Zis_texter
r
r load_payload s
zSerializer.load_payload)objr c C s t | jj|f| jS )zDumps the encoded object. The return value is always bytes.
If the internal serializer returns text, the value will be
encoded as UTF-8.
)r r r r )r r' r
r
r dump_payload s zSerializer.dump_payload)r r c C s( |dkr| j }| j| jfd|i| jS )zCreates a new instance of the signer to be used. The default
implementation uses the :class:`.Signer` base class.
Nr )r r r r )r r r
r
r make_signer s zSerializer.make_signerc c s |dkr| j }| j|V xd| jD ]Z}t|tr<|}| j}nt|trP|\}}n| j}x$| jD ]}||fd|i|V q^W q"W dS )zIterates over all signers to be tried for unsigning. Starts
with the configured signer, then constructs each signer
specified in ``fallback_signers``.
Nr ) r r) r r
dictr tupler r )r r fallbackkwargsr r
r
r iter_unsigners s
zSerializer.iter_unsigners)r' r r c C s2 t | j|}| j|j|}| jr.|jdS |S )zReturns a signed string serialized with the internal
serializer. The return value can be either a byte or unicode
string depending on the format of the internal serializer.
zutf-8)r r( r) signr r# )r r' r r rvr
r
r r s
zSerializer.dumps)r' fr r c C s |j | j|| dS )zLike :meth:`dumps` but dumps into a file. The file handle has
to be compatible with what the internal serializer expects.
N)writer )r r' r1 r r
r
r dump s zSerializer.dump)sr r- r c K sh t |}d}xJ| j|D ]<}y| j|j|S tk
rR } z
|}W Y dd}~X qX qW tjt|dS )ziReverse of :meth:`dumps`. Raises :exc:`.BadSignature` if the
signature validation fails.
N)r r. r&