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rˆe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-cr19813o/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   
 û