U
    c                     @   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
eeddddZeeddddZdeeje ed	d
dZG dd deZdde jeedddZG dd dZG dd dejZd eeeeje eje edddZejedddZ G dd dej!Z!dS )!    Nc                   @   s   e Zd ZdS )CryptographyDeprecationWarningN__name__
__module____qualname__ r   r   1lib/python3.8/site-packages/cryptography/utils.pyr      s   r   )namevaluereturnc                 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   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   )integerlengthr   c                 C   s    |  |p|  d d pddS )N         Zbig)to_bytes
bit_length)r   r   r   r   r   int_to_bytes(   s     r   c                   @   s   e Zd ZdS )InterfaceNotImplementedNr   r   r   r   r   r   .   s   r   F)check_annotationsZifaceklassr   c                C   s   d S Nr   r   r   r   r   verify_interface4   s    r!   c                   @   s   e Zd ZeedddZdS )_DeprecatedValue)r
   messagec                 C   s   || _ || _|| _d S r    )r
   r#   warning_class)selfr
   r#   r$   r   r   r   __init__=   s    z_DeprecatedValue.__init__N)r   r   r   objectstrr&   r   r   r   r   r"   <   s   r"   c                       sj   e Zd Zejd fddZeedddZeeddd	d
Z	eddddZ
eje dddZ  ZS )_ModuleWithDeprecations)modulec                    s   t  |j || jd< d S N_module)superr&   r   __dict__)r%   r*   	__class__r   r   r&   D   s    z _ModuleWithDeprecations.__init__)attrr   c                 C   s4   t | j|}t|tr0tj|j|jdd |j}|S N   )
stacklevel)	getattrr,   r   r"   warningswarnr#   r$   r
   r%   r1   objr   r   r   __getattr__H   s
    
z#_ModuleWithDeprecations.__getattr__N)r1   r
   r   c                 C   s   t | j|| d S r    )setattrr,   )r%   r1   r
   r   r   r   __setattr__O   s    z#_ModuleWithDeprecations.__setattr__c                 C   s:   t | j|}t|tr*tj|j|jdd t| j| d S r2   )	r5   r,   r   r"   r6   r7   r#   r$   delattrr8   r   r   r   __delattr__R   s    
z#_ModuleWithDeprecations.__delattr__r   c                 C   s   dgt | j S r+   )dirr,   r%   r   r   r   __dir__Y   s    z_ModuleWithDeprecations.__dir__)r   r   r   types
ModuleTyper&   r(   r'   r:   r<   r>   typingSequencerB   __classcell__r   r   r/   r   r)   C   s
   r)   )r
   module_namer#   r$   r	   r   c                 C   sJ   t j| }t|ts&t| t j|< }t| ||}|d k	rFt||| |S r    )sysmodulesr   r)   r"   r;   )r
   rH   r#   r$   r	   r*   Zdvr   r   r   
deprecated]   s    

rK   )funcr   c                    s.   d  t td fdd}t|S )Nz
_cached_{})instancec                    s0   t |  }|k	r|S | }t|  | |S r    )r5   r;   )rM   cacheresultZcached_namerL   sentinelr   r   innerr   s    zcached_property.<locals>.inner)r   r'   property)rL   rR   r   rP   r   cached_propertyn   s    
rT   c                   @   s(   e Zd ZedddZedddZdS )Enumr?   c                 C   s    d| j j d| j d| jdS )N<.z: >)r0   r   _name__value_rA   r   r   r   __repr__   s    zEnum.__repr__c                 C   s   | j j d| j S )NrW   )r0   r   rY   rA   r   r   r   __str__   s    zEnum.__str__N)r   r   r   r(   r[   r\   r   r   r   r   rU      s   rU   )N)N)"abcenumrI   rC   rE   r6   UserWarningr   ZDeprecatedIn36ZDeprecatedIn37ZDeprecatedIn39r(   r   r   r   intZOptionalr   	Exceptionr   ABCMetar'   boolr!   r"   rD   r)   ZTypeWarningrK   CallablerS   rT   rU   r   r   r   r   <module>   s@      