U
    çe¨]’  ã                   @   s,  d dl mZmZmZ d dlZd dlZd dlZd dlZd dlZG dd„ de	ƒZ
e
Ze
Ze
Ze
Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zeedƒr–ejZn
d&dd„Zeedƒr¶d'dd„Zn
d(dd„ZG dd„ deƒZeedƒrâejZnejZdd„ Zdd„ ZG dd„ deƒZ G d d!„ d!eƒZ!d"d#„ Z"d$d%„ Z#dS ))é    )Úabsolute_importÚdivisionÚprint_functionNc                   @   s   e Zd ZdS )ÚCryptographyDeprecationWarningN©Ú__name__Ú
__module__Ú__qualname__© r
   r
   ú4/usr/lib/python3/dist-packages/cryptography/utils.pyr      s   r   c                 C   s   t |tƒstd | ¡ƒ‚d S )Nz{} must be bytes)Ú
isinstanceÚbytesÚ	TypeErrorÚformat©ÚnameÚvaluer
   r
   r   Ú_check_bytes   s    
r   c                 C   s4   zt |ƒ W n" tk
r.   td | ¡ƒ‚Y nX d S )Nz{} must be bytes-like)Ú
memoryviewr   r   r   r
   r
   r   Ú_check_byteslike"   s    r   c                    s   t ‡ fdd„ƒS )Nc                    s
   t | ˆ ƒS ©N)Úgetattr©Úself©r   r
   r   Ú<lambda>*   ó    z$read_only_property.<locals>.<lambda>)Úpropertyr   r
   r   r   Úread_only_property)   s    r   c                    s   ‡ fdd„}|S )Nc                    s   t ˆ | ƒ ˆ  | ¡ | S r   ©Úverify_interfaceÚregister©Úklass©Úifacer
   r   Úregister_decorator.   s    

z.register_interface.<locals>.register_decoratorr
   )r%   r&   r
   r$   r   Úregister_interface-   s    r'   c                    s   ‡ ‡fdd„}|S )Nc                    s   ˆrt ˆ | ƒ ˆ  | ¡ | S r   r   r"   ©r%   Ú	predicater
   r   r&   6   s    

z1register_interface_if.<locals>.register_decoratorr
   )r)   r%   r&   r
   r(   r   Úregister_interface_if5   s    r*   Ú
from_bytesFc                 C   s$   |dkst ‚|rt ‚tt | ¡dƒS )NÚbigé   )ÚAssertionErrorÚintÚbinasciiZhexlify)ÚdataÚ	byteorderZsignedr
   r
   r   Úint_from_bytesA   s    r3   Úto_bytesc                 C   s    |   |p|  ¡ d d pdd¡S )Né   é   é   r,   )r4   Ú
bit_length)ÚintegerÚlengthr
   r
   r   Úint_to_bytesI   s     ÿr;   c                 C   s:   d|  }|d krt |ƒ}n|d }t | ||d@  ¡¡S )Nz%xé   r7   )Úlenr0   Z	unhexlifyÚzfill)r9   r:   Z
hex_stringÚnr
   r
   r   r;   N   s
    
c                   @   s   e Zd ZdS )ÚInterfaceNotImplementedNr   r
   r
   r
   r   r@   W   s   r@   Ú	signaturec                 C   sv   | j D ]j}t||ƒs$td ||¡ƒ‚tt| |ƒtjƒr8qtt| |ƒƒ}tt||ƒƒ}||krtd ||||¡ƒ‚qd S )Nz{} is missing a {!r} methodzK{}.{}'s signature differs from the expected. Expected: {!r}. Received: {!r})	Ú__abstractmethods__Úhasattrr@   r   r   r   ÚabcÚabstractpropertyrA   )r%   r#   ÚmethodZsigZactualr
   r
   r   r    a   s$    


ÿ   þÿr    c                 C   s   |   ¡ S r   )r8   )Úxr
   r
   r   r8   w   s    r8   c                   @   s   e Zd Zdd„ ZdS )Ú_DeprecatedValuec                 C   s   || _ || _|| _d S r   )r   ÚmessageÚwarning_class)r   r   rI   rJ   r
   r
   r   Ú__init__|   s    z_DeprecatedValue.__init__N)r   r   r	   rK   r
   r
   r
   r   rH   {   s   rH   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú_ModuleWithDeprecationsc                 C   s   || j d< d S ©NÚ_module)Ú__dict__)r   Úmoduler
   r
   r   rK   ƒ   s    z _ModuleWithDeprecations.__init__c                 C   s4   t | j|ƒ}t|tƒr0tj|j|jdd� |j}|S ©Nr<   )Ú
stacklevel)	r   rN   r   rH   ÚwarningsÚwarnrI   rJ   r   ©r   ÚattrÚobjr
   r
   r   Ú__getattr__†   s
    
z#_ModuleWithDeprecations.__getattr__c                 C   s   t | j||ƒ d S r   )ÚsetattrrN   )r   rV   r   r
   r
   r   Ú__setattr__�   s    z#_ModuleWithDeprecations.__setattr__c                 C   s:   t | j|ƒ}t|tƒr*tj|j|jdd� t| j|ƒ d S rQ   )	r   rN   r   rH   rS   rT   rI   rJ   ÚdelattrrU   r
   r
   r   Ú__delattr__�   s    
z#_ModuleWithDeprecations.__delattr__c                 C   s   dgt | jƒ S rM   )ÚdirrN   r   r
   r
   r   Ú__dir__—   s    z_ModuleWithDeprecations.__dir__N)r   r   r	   rK   rX   rZ   r\   r^   r
   r
   r
   r   rL   ‚   s
   rL   c                 C   s.   t j| }t|tƒs"t|ƒt j|< t| ||ƒS r   )ÚsysÚmodulesr   rL   rH   )r   Zmodule_namerI   rJ   rP   r
   r
   r   Ú
deprecated›   s    

ra   c                    s(   d  ˆ¡‰ tƒ ‰‡ ‡‡fdd„}t|ƒS )Nz
_cached_{}c                    s0   t | ˆ ˆƒ}|ˆk	r|S ˆ| ƒ}t| ˆ |ƒ |S r   )r   rY   )ÚinstanceÚcacheÚresult©Zcached_nameÚfuncÚsentinelr
   r   Úinner¦   s    zcached_property.<locals>.inner)r   Úobjectr   )rf   rh   r
   re   r   Úcached_property¢   s    
rj   )F)N)N)$Z
__future__r   r   r   rD   r0   Úinspectr_   rS   ÚUserWarningr   ZPersistentlyDeprecated2017ZPersistentlyDeprecated2018ZDeprecatedIn25ZDeprecatedIn27r   r   r   r'   r*   rC   r/   r+   r3   r;   Ú	Exceptionr@   rA   Z
getargspecr    r8   ri   rH   rL   ra   rj   r
   r
   r
   r   Ú<module>   s>   	



	
