3
[ð]È  ã               @   sŠ   d dl Z d dlZd dlZddlmZ ddlmZ ddd„Zd	d
„ Zdd„ Z	ej
ej d jdƒZejdƒZejZejZdd„ Zdd„ ZdS )é    Né   )Ú	text_type)ÚBadDataúutf-8Ústrictc             C   s   t | tƒr| j||ƒ} | S )N)Ú
isinstancer   Úencode)ÚsÚencodingÚerrors© r   ú=/tmp/pip-build-w1as9q70/itsdangerous/itsdangerous/encoding.pyÚ
want_bytes	   s    
r   c             C   s   t | ƒ} tj| ƒjdƒS )z^Base64 encode a string of bytes or text. The resulting bytes are
    safe to use in URLs.
    ó   =)r   Úbase64Úurlsafe_b64encodeÚrstrip)Ústringr   r   r   Úbase64_encode   s    r   c             C   sT   t | ddd�} | dt| ƒ d  7 } y
tj| ƒS  ttfk
rN   tdƒ‚Y nX dS )zOBase64 decode a URL-safe string of bytes or text. The result is
    bytes.
    ÚasciiÚignore)r
   r   r   é   zInvalid base64-encoded dataN)r   Úlenr   Úurlsafe_b64decodeÚ	TypeErrorÚ
ValueErrorr   )r   r   r   r   Úbase64_decode   s    
r   z-_=r   z>Qc             C   s   t | ƒjdƒS )Nó    )Ú_int_to_bytesÚlstrip)Únumr   r   r   Úint_to_bytes,   s    r!   c             C   s   t | jddƒƒd S )Né   r   r   )Ú_bytes_to_intÚrjust)Zbytestrr   r   r   Úbytes_to_int0   s    r%   )r   r   )r   r   ÚstructÚ_compatr   Úexcr   r   r   r   Úascii_lettersÚdigitsr   Z_base64_alphabetÚStructZ_int64_structÚpackr   Úunpackr#   r!   r%   r   r   r   r   Ú<module>   s   

