3
l�_� � @ s d dl mZmZmZ d dlZd dlZd dlZd dlZd dlZG dd� de �Z
e
Ze
Zdd� Z
dd� Zd d
� Zdd� Zd
d� Zeed�r�ejZn
d$dd�Zeed�r�d%dd�Zn
d&dd�ZG dd� de�Zeed�r�ejZnejZdd� ZG dd� de�ZG dd� de�Zd d!� Zd"d#� Z dS )'� )�absolute_import�division�print_functionNc @ s e Zd ZdS )�CryptographyDeprecationWarningN)�__name__�
__module__�__qualname__� r r �/usr/lib64/python3.6/utils.pyr s r c C s t |t�stdj| ���d S )Nz{} must be bytes)�
isinstance�bytes� TypeError�format)�name�valuer r r
�_check_bytes s
r c C s4 yt |� W n" tk
r. tdj| ���Y nX d S )Nz{} must be bytes-like)�
memoryviewr
r )r r r r r
�_check_byteslike s r c s t � fdd��S )Nc s
t | � �S )N)�getattr)�self)r r r
�( s z$read_only_property..)�property)r r )r r
�read_only_property' s r c s � fdd�}|S )Nc s t � | � � j| � | S )N)�verify_interface�register)�klass)�ifacer r
�register_decorator, s
z.register_interface..register_decoratorr )r r r )r r
�register_interface+ s r c s � �fdd�}|S )Nc s �rt � | � � j| � | S )N)r r )r )r � predicater r
r 5 s
z1register_interface_if..register_decoratorr )r r r r )r r r
�register_interface_if4 s r �
from_bytesFc C s t tj| �d�S )N� )�int�binasciiZhexlify)�data� byteorderZsignedr r r
�int_from_bytesB s r' �to_bytesc C s | j |p| j� d d pdd�S )N� � � Zbig)r( �
bit_length)�integer�lengthr r r
�int_to_bytesK s r/ c C s: d| }|d krt |�}n|d }tj|j||d@ ��S )Nz%x� r+ )�lenr$ Z unhexlify�zfill)r- r. Z
hex_string�nr r r
r/ S s
c @ s e Zd ZdS )�InterfaceNotImplementedN)r r r r r r r
r4 \ s r4 � signaturec C sz xt| j D ]j}t||�s&tdj||���tt| |�tj�r:qtt| |��}tt||��}||krtdj||||���qW d S )Nz{} is missing a {!r} methodzK{}.{}'s signature differs from the expected. Expected: {!r}. Received: {!r}) �__abstractmethods__�hasattrr4 r r r �abc�abstractpropertyr5 )r r �methodZsig�actualr r r
r f s
r c @ s e Zd Zdd� ZdS )�_DeprecatedValuec C s || _ || _|| _d S )N)r �message�
warning_class)r r r= r> r r r
�__init__y s z_DeprecatedValue.__init__N)r r r r? r r r r
r<