
=\•jí  ã            r  @   s  d  Z  d d l Z d d d d g Z Gd d „  d e ƒ Z y  d d l m Z d	 d
 „  Z Wn€e k
 rÜ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 glZ d d „  Z d  d
 „  Z Yn Xd! d „  Z d" d „  Z d# d „  Z d S)$aH  
websocket - WebSocket client library for Python

Copyright (C) 2010 Hiroki Ohtani(liris)

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

é    NÚNoLockÚvalidate_utf8Úextract_err_messageÚextract_error_codec               @   s(   e  Z d  Z d d „  Z d d „  Z d S)r   c             C   s   d  S)N© )Úselfr   r   ú</tmp/pip-build-jxowagp5/websocket-client/websocket/_utils.pyÚ	__enter__   s    zNoLock.__enter__c             C   s   d  S)Nr   )r   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__   s    zNoLock.__exit__N)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r      s   )ÚUtf8Validatorc             C   s   t  ƒ  j |  ƒ d S)Nr   )r   Úvalidate)Úutfbytesr   r   r   Ú_validate_utf8(   s    r   é   é   é	   é   é   é   é
   é   é   é   é   é   é   é$   é<   é`   éT   é0   éH   c             C   sR   t  | } |  t k r( | d @| d >Bn d | ?| @} t  d |  | }  |  | f S)Né?   r   éÿ   é   )Ú_UTF8DÚ_UTF8_ACCEPT)ÚstateÚcodepÚchÚtpr   r   r   Ú_decodeF   s    
,r1   c             C   s^   t  } d } xK |  D]C } t j r. t | ƒ } t | | | ƒ \ } } | t k r d Sq Wd S)Nr   FT)r,   ÚsixÚPY2Úordr1   Ú_UTF8_REJECT)r   r-   r.   Úir   r   r   r   O   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    c             C   s   |  j  r |  j  d Sd  Sd  S)Nr   )Úargs)Ú	exceptionr   r   r   r   e   s    	c             C   sG   |  j  rC t |  j  ƒ d k rC t |  j  d t ƒ r? |  j  d Sd  Sd  S)Nr   r   )r7   ÚlenÚ
isinstanceÚint)r8   r   r   r   r   l   s    )Ú__doc__r2   Ú__all__Úobjectr   Zwsaccel.utf8validatorr   r   ÚImportErrorr,   r5   r+   r1   r   r   r   r   r   r   r   Ú<module>   s6   	````````HHHH*		