o
    ge`                     @   s(  d dl 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edefddZdedefdd	Zdefd
dZdd Zdd Zd(dedeje defddZG dd deZdd ZddddZG dd deZG dd  d eZd!d" Zd#d$ Zeejed%e
Z G d&d' d'ej!Z!dS ))    Nc                   @      e Zd ZdS )CryptographyDeprecationWarningN__name__
__module____qualname__ r   r   4/usr/lib/python3/dist-packages/cryptography/utils.pyr          r   namevaluec                 C   s   t |tstd| d S )Nz{} must be bytes)
isinstancebytes	TypeErrorformatr   r   r   r   r	   _check_bytes   s   
r   c                 C   s,   zt | W d S  ty   td| w )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>)   s   
 z$read_only_property.<locals>.<lambda>)propertyr   r   r   r	   read_only_property(      r   c                    s   dd fdd
}|S )NFcheck_annotationsc                   s   t  | |d  |  | S Nr   verify_interfaceregisterklassr   ifacer   r	   register_decorator-   s   
z.register_interface.<locals>.register_decoratorr   )r'   r(   r   r&   r	   register_interface,   s   r)   c                    s   dd fdd
}|S )NFr   c                   s    rt  | |d  |  | 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,   integerlengthreturnc                 C   s    |  |p|  d d pddS )N         big)to_bytes
bit_length)r-   r.   r   r   r	   int_to_bytes?   s   r6   c                   @   r   )InterfaceNotImplementedNr   r   r   r   r	   r7   E   r
   r7   c                 C   s   t dd | j D S )Nc                 S   s   g | ]
}|j tjjd qS ))
annotation)replaceinspect	Parameterempty).0paramr   r   r	   
<listcomp>K   s    z$strip_annotation.<locals>.<listcomp>)r:   	Signature
parametersvalues)	signaturer   r   r	   strip_annotationI   s
   rD   Fr   c                C   s   | j D ]D}t||std||tt| |tjrqt	t| |}t	t||}|r3||k}nt
|t
|k}|sGtd||||qd S )Nz{} is missing a {!r} methodzK{}.{}'s signature differs from the expected. Expected: {!r}. Received: {!r})__abstractmethods__hasattrr7   r   r   r   abcabstractpropertyr:   rC   rD   )r'   r%   r   methodsigactualokr   r   r	   r"   R   s&   



r"   c                   @   s   e Zd Zdd ZdS )_DeprecatedValuec                 C   s   || _ || _|| _d S r   )r   messagewarning_class)r   r   rN   rO   r   r   r	   __init__i   s   
z_DeprecatedValue.__init__N)r   r   r   rP   r   r   r   r	   rM   h   s    rM   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	   rP   p   s   z _ModuleWithDeprecations.__init__c                 C   s4   t | j|}t|trtj|j|jdd |j}|S N   )
stacklevel)	r   rS   r   rM   warningswarnrN   rO   r   r   attrobjr   r   r	   __getattr__s   s
   
z#_ModuleWithDeprecations.__getattr__c                 C   s   t | j|| d S r   )setattrrS   )r   r\   r   r   r   r	   __setattr__z   s   z#_ModuleWithDeprecations.__setattr__c                 C   s:   t | j|}t|trtj|j|jdd t| j| d S rV   )	r   rS   r   rM   rY   rZ   rN   rO   delattrr[   r   r   r	   __delattr__}   s   
z#_ModuleWithDeprecations.__delattr__c                 C   s   dgt | j S rR   )dirrS   r   r   r   r	   __dir__   r   z_ModuleWithDeprecations.__dir__N)r   r   r   rP   r^   r`   rb   rd   r   r   r   r	   rQ   o   s    rQ   c                 C   s.   t j| }t|tst|t j|< t| ||S r   )sysmodulesr   rQ   rM   )r   module_namerN   rO   rU   r   r   r	   
deprecated   s   


rh   c                    s(   d  t  fdd}t|S )Nz
_cached_{}c                    s0   t |  }|ur|S | }t|  | |S r   )r   r_   )instancecacheresultcached_namefuncsentinelr   r	   inner   s   zcached_property.<locals>.inner)r   objectr   )rn   rp   r   rl   r	   cached_property   s   
rr   z8int_from_bytes is deprecated, use int.from_bytes insteadc                   @   s   e Zd Zdd Zdd ZdS )Enumc                 C   s    d| j j d| j d| jdS )N<.z: >)	__class__r   _name__value_r   r   r   r	   __repr__   s    zEnum.__repr__c                 C   s   | j j d| j S )Nru   )rw   r   rx   r   r   r   r	   __str__   s   zEnum.__str__N)r   r   r   rz   r{   r   r   r   r	   rs      s    rs   r   )"rG   enumr:   re   typingrY   UserWarningr   PersistentlyDeprecated2017PersistentlyDeprecated2019DeprecatedIn34strr   r   r   r   r)   r,   intOptionalr6   	Exceptionr7   rD   r"   rq   rM   rQ   rh   rr   
from_bytesr   int_from_bytesrs   r   r   r   r	   <module>   s<   	
		
