U
    g1                  o  @   s  d dl mZ ddddgZG dd dZz*d dlmZ eeef edd	d
Z	W n( e
k
rx   d ZdZd d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ddddddddddddddddddddddddd dddddd dd ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddglZeeeeddd Zeeef edd!d
Z	Y nX eeef edd"dZeeed#f d$d%dZeeed#f d$d&dZd#S )'    )UnionNoLockvalidate_utf8extract_err_messageextract_error_codec                   @   s(   e Zd ZddddZddddZdS )r   N)returnc                 C   s   d S N )selfr	   r	   4/tmp/pip-unpacked-wheel-0xk_xrpx/websocket/_utils.py	__enter__   s    zNoLock.__enter__c                 C   s   d S r   r	   )r
   exc_type	exc_value	tracebackr	   r	   r   __exit__   s    zNoLock.__exit__)__name__
__module____qualname__r   r   r	   r	   r	   r   r      s   )Utf8Validator)utfbytesr   c                 C   s   t  | d }|S Nr   )r   validate)r   resultr	   r	   r   _validate_utf8%   s    r         	            
                     $   <   `   T   0   H   )statecodepchr   c                 C   sD   t | }| tkr |d@ |d> B n
d|? |@ }t d|  |  } | |fS )N?   r$         )_UTF8D_UTF8_ACCEPT)r-   r.   r/   tpr	   r	   r   _decode  s
    "r6   c                 C   s8   t }d}| D ]&}t||t|\}}|tkr dS qdS )Nr   FT)r4   r6   int_UTF8_REJECT)r   r-   r.   ir	   r	   r   r     s    c                 C   s   t | S )z
    validate utf8 byte string.
    utfbytes: utf byte string to check.
    return value: if valid utf8 string, return true. Otherwise, return false.
    )r   )r   r	   r	   r   r     s    N)	exceptionr   c                 C   s   | j r| j d }|S d S d S r   )args)r:   Zexception_messager	   r	   r   r     s    
c                 C   s6   | j r2t| j dkr2t| j d tr.| j d S d S d S )Nr   r   )r;   len
isinstancer7   )r:   r	   r	   r   r     s    )typingr   __all__r   Zwsaccel.utf8validatorr   strbytesboolr   ImportErrorr4   r8   r3   r7   tupler6   r   	Exceptionr   r   r	   r	   r	   r   <module>   s      u
	