B
    Ÿƒ†\b  ã               @   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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	   ú1lib/python3.7/site-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   yt |ƒ W n" tk
r.   td | ¡ƒ‚Y nX d S )Nz{} must be bytes-like)Ú
memoryviewr   r   )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>)   s    z$read_only_property.<locals>.<lambda>)Úproperty)r   r	   )r   r
   Úread_only_property(   s    r   c                s   ‡ fdd„}|S )Nc                s   t ˆ | ƒ ˆ  | ¡ | S )N)Ú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 )N)r   r   )r   )r   Ú	predicater	   r
   r   5   s    

z1register_interface_if.<locals>.register_decoratorr	   )r   r   r   r	   )r   r   r
   Úregister_interface_if4   s    r    Ú
from_bytesFc             C   s$   |dkst ‚|rt ‚tt | ¡dƒS )NÚbigé   )ÚAssertionErrorÚintÚbinasciiZhexlify)ÚdataÚ	byteorderÚsignedr	   r	   r
   Úint_from_bytes@   s    r*   Úto_bytesc             C   s    |   |p|  ¡ d d pdd¡S )Né   é   é   r"   )r+   Ú
bit_length)ÚintegerÚlengthr	   r	   r
   Úint_to_bytesH   s    r2   c             C   s:   d|  }|d krt |ƒ}n|d }t | ||d@  ¡¡S )Nz%xé   r.   )Úlenr&   Z	unhexlifyÚzfill)r0   r1   Z
hex_stringÚnr	   r	   r
   r2   M   s
    
c               @   s   e Zd ZdS )ÚInterfaceNotImplementedN)r   r   r   r	   r	   r	   r
   r7   V   s   r7   Ú	signaturec             C   sz   xt| j D ]j}t||ƒs&td ||¡ƒ‚tt| |ƒtjƒr:qtt| |ƒƒ}tt||ƒƒ}||krtd ||||¡ƒ‚qW d S )Nz{} is missing a {!r} methodzK{}.{}'s signature differs from the expected. Expected: {!r}. Received: {!r})	Ú__abstractmethods__Úhasattrr7   r   r   r   ÚabcÚabstractpropertyr8   )r   r   ÚmethodZsigZactualr	   r	   r
   r   `   s    
r   c             C   s   |   ¡ S )N)r/   )Úxr	   r	   r
   r/   v   s    r/   c               @   s   e Zd Zdd„ ZdS )Ú_DeprecatedValuec             C   s   || _ || _|| _d S )N)r   ÚmessageÚwarning_class)r   r   r@   rA   r	   r	   r
   Ú__init__{   s    z_DeprecatedValue.__init__N)r   r   r   rB   r	   r	   r	   r
   r?   z   s   r?   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
   rB   ‚   s    z _ModuleWithDeprecations.__init__c             C   s4   t | j|ƒ}t|tƒr0tj|j|jdd |j}|S )Nr3   )Ú
stacklevel)	r   rD   r   r?   ÚwarningsÚwarnr@   rA   r   )r   ÚattrÚobjr	   r	   r
   Ú__getattr__…   s
    
z#_ModuleWithDeprecations.__getattr__c             C   s   t | j||ƒ d S )N)ÚsetattrrD   )r   rJ   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 )Nr3   )rG   )	r   rD   r   r?   rH   rI   r@   rA   Údelattr)r   rJ   rK   r	   r	   r
   Ú__delattr__   s    
z#_ModuleWithDeprecations.__delattr__c             C   s   dgt | jƒ S )NrD   )ÚdirrD   )r   r	   r	   r
   Ú__dir__–   s    z_ModuleWithDeprecations.__dir__N)r   r   r   rB   rL   rN   rP   rR   r	   r	   r	   r
   rC      s
   rC   c             C   s.   t j| }t|tƒs"t|ƒt j|< t| ||ƒS )N)ÚsysÚmodulesr   rC   r?   )r   Zmodule_namer@   rA   rF   r	   r	   r
   Ú
deprecatedš   s    

rU   c                s(   d  ˆ¡‰ tƒ ‰‡ ‡‡fdd„}t|ƒS )Nz
_cached_{}c                s0   t | ˆ ˆƒ}|ˆk	r|S ˆ| ƒ}t| ˆ |ƒ |S )N)r   rM   )ÚinstanceÚcacheÚresult)Úcached_nameÚfuncÚsentinelr	   r
   Úinner¥   s    zcached_property.<locals>.inner)r   Úobjectr   )rZ   r\   r	   )rY   rZ   r[   r
   Úcached_property¡   s    
r^   )F)N)N)#Z
__future__r   r   r   r;   r&   ÚinspectrS   rH   ÚUserWarningr   ZPersistentlyDeprecated2017ZPersistentlyDeprecated2018ZDeprecatedIn25r   r   r   r   r    r:   r%   r!   r*   r2   Ú	Exceptionr7   r8   Z
getargspecr   r/   r]   r?   rC   rU   r^   r	   r	   r	   r
   Ú<module>   s<   	



	
