U
    /j                     @  s6  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 G dd de
ZeZeZeZeZeZeZejdkrejeeef ZnejZddd	d
ddZddd	d
ddZd(ddddddZG dd deZG dd dZG dd dejZ d)ddddddddd Z!d!d"d#d$d%Z"G d&d' d'ej#Z#dS )*    )annotationsN)CallableSequencec                   @  s   e Zd ZdS )CryptographyDeprecationWarningN__name__
__module____qualname__ r
   r
   6/tmp/pip-unpacked-wheel-qzbw3lpx/cryptography/utils.pyr      s   r   )   	   strbytesNone)namevaluereturnc                 C  s   t |tst|  dd S )Nz must be bytes)
isinstancer   	TypeErrorr   r   r
   r
   r   _check_bytes*   s    
r   Bufferc                 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   _check_byteslike/   s    r   intz
int | None)integerlengthr   c                 C  s0   |dkrt d| |p*|  d d p*ddS )Nr   zlength argument can't be 0         big)
ValueErrorto_bytes
bit_length)r   r   r
   r
   r   int_to_bytes6   s     r%   c                   @  s   e Zd ZdS )InterfaceNotImplementedNr   r
   r
   r
   r   r&   >   s   r&   c                   @  s   e Zd ZdddddZdS )_DeprecatedValueobjectr   )r   messagec                 C  s   || _ || _|| _d S N)r   r)   warning_class)selfr   r)   r+   r
   r
   r   __init__C   s    z_DeprecatedValue.__init__N)r   r   r	   r-   r
   r
   r
   r   r'   B   s   r'   c                      sb   e Zd Zdd fddZddddd	Zdd
ddddZdddddZddddZ  ZS )_ModuleWithDeprecationsztypes.ModuleType)modulec                   s   t  |j || jd< d S )N_module)superr-   r   __dict__)r,   r/   	__class__r
   r   r-   J   s    z _ModuleWithDeprecations.__init__r   z
typing.Any)r   r   c                 C  s4   t | j|}t|tr0tj|j|jdd |j}|S N   )
stacklevel)	getattrr0   r   r'   warningswarnr)   r+   r   )r,   r   objr
   r
   r   __getattr__N   s
    
z#_ModuleWithDeprecations.__getattr__r(   r   )attrr   r   c                 C  s   t | j|| d S r*   )setattrr0   )r,   r=   r   r
   r
   r   __setattr__U   s    z#_ModuleWithDeprecations.__setattr__)r=   r   c                 C  s:   t | j|}t|tr*tj|j|jdd t| j| d S r5   )	r8   r0   r   r'   r9   r:   r)   r+   delattr)r,   r=   r;   r
   r
   r   __delattr__X   s    
z#_ModuleWithDeprecations.__delattr__zSequence[str]r   c                 C  s   dt | jS )Nr0   )r0   )dirr0   r,   r
   r
   r   __dir___   s    z_ModuleWithDeprecations.__dir__)	r   r   r	   r-   r<   r?   rA   rE   __classcell__r
   r
   r3   r   r.   I   s
   r.   r(   ztype[Warning]z
str | None)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   rG   r)   r+   r   r/   Zdvr
   r
   r   
deprecatedc   s    

rJ   r   property)funcr   c                   s.   d  t  dd fdd}t|S )NZ_cached_r(   )instancec                   s0   t |  }|k	r|S | }t|  | |S r*   )r8   r>   )rM   cacheresultZcached_namerL   sentinelr
   r   innerx   s    zcached_property.<locals>.inner)r(   rK   )rL   rR   r
   rP   r   cached_propertyt   s    
rS   c                   @  s(   e Zd ZddddZddddZdS )Enumr   rB   c                 C  s    d| j j d| j d| jdS )N<.z: >)r4   r   _name__value_rD   r
   r
   r   __repr__   s    zEnum.__repr__c                 C  s   | j j d| j S )NrV   )r4   r   rX   rD   r
   r
   r   __str__   s    zEnum.__str__N)r   r   r	   rZ   r[   r
   r
   r
   r   rT      s   rT   )N)N)$
__future__r   enumrH   typestypingr9   collections.abcr   r   UserWarningr   ZDeprecatedIn36ZDeprecatedIn40ZDeprecatedIn41ZDeprecatedIn42ZDeprecatedIn43ZDeprecatedIn47version_infoUnionr   	bytearrayr   r   
ByteStringr   r   r%   	Exceptionr&   r'   
ModuleTyper.   rJ   rS   rT   r
   r
   r
   r   <module>   s4   
 