3
dZ*                 @   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e	Z
e	ZeZdd Zdd Zdd Zd	d
 ZeedrzejZn
d%ddZeedrd&ddZn
d'ddZG dd deZeedrejZnejZdd Zejd(krdd Zn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             C   s   t |tstdj| d S )Nz{0} must be bytes)
isinstancebytes	TypeErrorformat)namevalue r   4/usr/lib/python3/dist-packages/cryptography/utils.py_check_bytes   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  |   j|  | 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  |   j|  | S )N)r   r   )r   )r   	predicater   r   r   (   s    

z1register_interface_if.<locals>.register_decoratorr   )r   r   r   r   )r   r   r   register_interface_if'   s    r   
from_bytesFc             C   s*   |dkst | st tt| jddS )Nbighex   )AssertionErrorintr   encode)data	byteorderZsignedr   r   r   int_from_bytes3   s    
r$   to_bytesc             C   s    | j |p| j d d pddS )N         r   )r%   
bit_length)integerlengthr   r   r   int_to_bytes<   s    r,   c             C   s:   d|  }|d krt |}n|d }tj|j||d@  S )Nz%x   r(   )lenbinasciiZ	unhexlifyzfill)r*   r+   Z
hex_stringnr   r   r   r,   A   s
    
c               @   s   e Zd ZdS )InterfaceNotImplementedN)__name__
__module____qualname__r   r   r   r   r2   J   s   r2   	signaturec             C   sz   xt| j D ]j}t||s&tdj||tt| |tjr:qtt| |}tt||}||krtdj||||qW d S )Nz{0} is missing a {1!r} methodzO{0}.{1}'s signature differs from the expected. Expected: {2!r}. Received: {3!r})	__abstractmethods__hasattrr2   r   r   r   abcabstractpropertyr6   )r   r   methodZsigZactualr   r   r   r   T   s    
r   r-   r&   c             C   s   | j  S )N)r)   )xr   r   r   r)   i   s    r)   c             C   s   t t| d| dk  S )Nr-   r   )r.   bin)r<   r   r   r   r)   l   s    c               @   s   e Zd Zdd ZdS )_DeprecatedValuec             C   s   || _ || _|| _d S )N)r
   messagewarning_class)r   r
   r?   r@   r   r   r   __init__q   s    z_DeprecatedValue.__init__N)r3   r4   r5   rA   r   r   r   r   r>   p   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   rA   x   s    z _ModuleWithDeprecations.__init__c             C   s4   t | j|}t|tr0tj|j|jdd |j}|S )Nr-   )
stacklevel)	r   rC   r   r>   warningswarnr?   r@   r
   )r   attrobjr   r   r   __getattr__{   s
    
z#_ModuleWithDeprecations.__getattr__c             C   s   t | j|| d S )N)setattrrC   )r   rI   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 )Nr-   )rF   )	r   rC   r   r>   rG   rH   r?   r@   delattr)r   rI   rJ   r   r   r   __delattr__   s    
z#_ModuleWithDeprecations.__delattr__c             C   s   dgt | j S )NrC   )dirrC   )r   r   r   r   __dir__   s    z_ModuleWithDeprecations.__dir__N)r3   r4   r5   rA   rK   rM   rO   rQ   r   r   r   r   rB   w   s
   rB   c             C   s.   t j| }t|ts"t|t j|< t| ||S )N)sysmodulesr   rB   r>   )r
   Zmodule_namer?   r@   rE   r   r   r   
deprecated   s    

rT   c                s(   dj  t  fdd}t|S )Nz_cached_{0}c                s0   t |  }|k	r|S | }t|  | |S )N)r   rL   )instancecacheresult)cached_namefuncsentinelr   r   inner   s    zcached_property.<locals>.inner)r   objectr   )rY   r[   r   )rX   rY   rZ   r   cached_property   s    
r]   )F)N)N)r-   r&   )#Z
__future__r   r   r   r9   r/   inspectrR   rG   DeprecationWarningZPersistentlyDeprecatedZDeprecatedIn19PendingDeprecationWarningZDeprecatedIn21r   r   r   r   r8   r    r   r$   r,   	Exceptionr2   r6   Z
getargspecr   version_infor)   r\   r>   rB   rT   r]   r   r   r   r   <module>   s<   	



	


