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_bytesFcCsttj|�d�S)N�)�int�binasciiZhexlify)�data� byteorderZsignedr r r �int_from_bytesBsr'�to_bytescCs |j|p|j�ddpdd�S)N���Zbig)r(� bit_length)�integer�lengthr r r � int_to_bytesKsr/cCs:d|}|dkrt|�}n|d}tj|j||d@��S)Nz%x�r+)�lenr$Z unhexlify�zfill)r-r.Z hex_string�nr r r r/Ss  c@s eZdZdS)�InterfaceNotImplementedN)rrrr r r r r4\sr4� 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__�hasattrr4rr r�abc�abstractpropertyr5)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)rrrr?r r r r r<xsr<c@s4eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd S) �_ModuleWithDeprecationscCs||jd<dS)N�_module)�__dict__)r�moduler r r r?�sz _ModuleWithDeprecations.__init__cCs4t|j|�}t|t�r0tj|j|jdd�|j}|S)Nr0)� stacklevel) rrAr r<�warnings�warnr=r>r)r�attr�objr r r � __getattr__�s   z#_ModuleWithDeprecations.__getattr__cCst|j||�dS)N)�setattrrA)rrGrr r r � __setattr__�sz#_ModuleWithDeprecations.__setattr__cCs:t|j|�}t|t�r*tj|j|jdd�t|j|�dS)Nr0)rD) rrAr r<rErFr=r>�delattr)rrGrHr r r � __delattr__�s  z#_ModuleWithDeprecations.__delattr__cCsdgt|j�S)NrA)�dirrA)rr r r �__dir__�sz_ModuleWithDeprecations.__dir__N)rrrr?rIrKrMrOr r r r r@s r@cCs.tj|}t|t�s"t|�tj|<t|||�S)N)�sys�modulesr r@r<)rZ module_namer=r>rCr r r � deprecated�s  rRcs(dj���t�����fdd�}t|�S)Nz _cached_{}cs0t|���}|�k r|S�|�}t|�|�|S)N)rrJ)�instance�cache�result)� cached_name�func�sentinelr r �inner�s   zcached_property..inner)r�objectr)rWrYr )rVrWrXr �cached_property�s r[)F)N)N)!Z __future__rrrr8r$�inspectrPrE� UserWarningrZPersistentlyDeprecated2017ZPersistentlyDeprecated2019rrrrr r7r#r!r'r/� Exceptionr4r5Z getargspecrrZr<r@rRr[r r r r �s8