3 l�_��@sddlmZmZmZddlZddlZddlZddlZddlZGdd�de �Z e Z e Z dd�Z dd�Zd d �Zd d �Zd d�Zeed�r�ejZn d$dd�Zeed�r�d%dd�Zn d&dd�ZGdd�de�Zeed�r�ejZnejZdd�ZGdd�de�ZGdd�de�Zd d!�Zd"d#�Z dS)'�)�absolute_import�division�print_functionNc@s eZdZdS)�CryptographyDeprecationWarningN)�__name__� __module__� __qualname__�r r �/usr/lib64/python3.6/utils.pyrsrcCst|t�stdj|���dS)Nz{} must be bytes)� isinstance�bytes� TypeError�format)�name�valuer r r � _check_bytess rc Cs4y t|�Wn"tk r.tdj|���YnXdS)Nz{} must be bytes-like)� memoryviewr r)rrr r r �_check_byteslike s rcst�fdd��S)Ncs t|��S)N)�getattr)�self)rr r �(sz$read_only_property..)�property)rr )rr �read_only_property'srcs�fdd�}|S)Ncst�|��j|�|S)N)�verify_interface�register)�klass)�ifacer r �register_decorator,s  z.register_interface..register_decoratorr )rrr )rr �register_interface+s rcs��fdd�}|S)Ncs�rt�|��j|�|S)N)rr)r)r� predicater r r5s  z1register_interface_if..register_decoratorr )rrrr )rrr �register_interface_if4sr � from_bytesFcCs&|dks t�| st�ttj|�d�S)N�big�)�AssertionError�int�binasciiZhexlify)�data� byteorderZsignedr r r �int_from_bytesBs  r)�to_bytescCs |j|p|j�ddpdd�S)N���r")r*� bit_length)�integer�lengthr r r � int_to_bytesKsr1cCs:d|}|dkrt|�}n|d}tj|j||d@��S)Nz%x�r-)�lenr&Z unhexlify�zfill)r/r0Z hex_string�nr r r r1Ss  c@s eZdZdS)�InterfaceNotImplementedN)rrrr r r r r6\sr6� signaturecCszxt|jD]j}t||�s&tdj||���tt||�tj�r:qtt||��}tt||��}||krtdj||||���qWdS)Nz{} is missing a {!r} methodzK{}.{}'s signature differs from the expected. Expected: {!r}. Received: {!r}) �__abstractmethods__�hasattrr6rr r�abc�abstractpropertyr7)rr�methodZsig�actualr r r rfs  rc@seZdZdd�ZdS)�_DeprecatedValuecCs||_||_||_dS)N)r�message� warning_class)rrr?r@r r r �__init__ysz_DeprecatedValue.__init__N)rrrrAr r r r r>xsr>c@s4eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd S) �_ModuleWithDeprecationscCs||jd<dS)N�_module)�__dict__)r�moduler r r rA�sz _ModuleWithDeprecations.__init__cCs4t|j|�}t|t�r0tj|j|jdd�|j}|S)Nr2)� stacklevel) rrCr r>�warnings�warnr?r@r)r�attr�objr r r � __getattr__�s   z#_ModuleWithDeprecations.__getattr__cCst|j||�dS)N)�setattrrC)rrIrr r r � __setattr__�sz#_ModuleWithDeprecations.__setattr__cCs:t|j|�}t|t�r*tj|j|jdd�t|j|�dS)Nr2)rF) rrCr r>rGrHr?r@�delattr)rrIrJr r r � __delattr__�s  z#_ModuleWithDeprecations.__delattr__cCsdgt|j�S)NrC)�dirrC)rr r r �__dir__�sz_ModuleWithDeprecations.__dir__N)rrrrArKrMrOrQr r r r rBs rBcCs.tj|}t|t�s"t|�tj|<t|||�S)N)�sys�modulesr rBr>)rZ module_namer?r@rEr r r � deprecated�s  rTcs(dj���t�����fdd�}t|�S)Nz _cached_{}cs0t|���}|�k r|S�|�}t|�|�|S)N)rrL)�instance�cache�result)� cached_name�func�sentinelr r �inner�s   zcached_property..inner)r�objectr)rYr[r )rXrYrZr �cached_property�s r])F)N)N)!Z __future__rrrr:r&�inspectrRrG� UserWarningrZPersistentlyDeprecated2017ZPersistentlyDeprecated2019rrrrr r9r%r!r)r1� Exceptionr6r7Z getargspecrr\r>rBrTr]r r r r �s8