
    <fh                         d dl Z d dlZd dlZd dlmZmZmZ ddlmZm	Z	 ddl
mZmZmZmZ ddlmZmZ 	 ej$                  ej&                  dfgZ eed      r(ej-                  ej.                  ej0                  df        eed      r(ej-                  ej$                  ej2                  d	f        eed
      r(ej-                  ej$                  ej4                  df        eed      r(ej-                  ej$                  ej6                  df       dag dZ G d d      Zdeeee f      ddfdZ!deeee f      fdZ"dej                  dede#fdZ$dej                  de#fdZ%dej                  dee#e&f   defdZ'y)    N)OptionalUnionAny   )"WebSocketConnectionClosedExceptionWebSocketTimeoutException)SSLErrorSSLEOFErrorSSLWantReadErrorSSLWantWriteError)extract_error_codeextract_err_messageSO_KEEPALIVETCP_KEEPIDLE   TCP_KEEPINTVL
   TCP_KEEPCNT   )DEFAULT_SOCKET_OPTIONsock_optsetdefaulttimeoutgetdefaulttimeoutrecv	recv_linesendc                   <    e Zd Zdeee      deeeef      ddfdZ	y)r   sockoptssloptreturnNc                 >    |g }|i }|| _         || _        d | _        y )N)r   r   timeout)selfr   r   s      D/var/www/zara/venv/lib/python3.12/site-packages/websocket/_socket.py__init__zsock_opt.__init__8   s-     ?G>F48    )
__name__
__module____qualname__r   listtupledictstrr   r%    r&   r$   r   r   7   s5    	9U,	96>tCH~6N	9		9r&   r   r"   r    c                     | a y)z
    Set the global timeout setting to connect.

    Parameters
    ----------
    timeout: int or float
        default socket timeout time (in seconds)
    N_default_timeout)r"   s    r$   r   r   D   s
     r&   c                      t         S )z
    Get default timeout

    Returns
    ----------
    _default_timeout: int or float
        Return the global timeout setting (in seconds) to connect.
    r0   r.   r&   r$   r   r   Q   s
     r&   sockbufsizec                      st        d       fd}	  j                         dk(  r j                        }n |       }|t        d      |st        d      |S # t        $ r t	        d      t
        j                  $ r}t        |      }t	        |      d }~wt        $ r0}t        |      }t        |t              rd|v rt	        |       d }~ww xY w)Nsocket is already closed.c                     	 j                        S # t        $ r Y nMt        j                  $ r8} t	        |       }|t
        j                  t
        j                  fvr Y d } ~ nd } ~ ww xY wt        j                         }|j                  t        j                         |j                  j                               }|j                          |rj                        S t        d      )Nz%Connection timed out waiting for data)r   r   socketerrorr   errnoEAGAINEWOULDBLOCK	selectorsDefaultSelectorregister
EVENT_READselect
gettimeoutcloser   )exc
error_codeselrr4   r3   s       r$   _recvzrecv.<locals>._recva   s    	99W%% 	|| 	+C0J%,,0A0A!BB C	 '')T9//0JJt()		99W%% ,,STTs    	A)A).A$$A)r   zConnection timed out	timed outz#Connection to remote host was lost.)r   rB   r   TimeoutErrorr   r8   r"   r   r	   
isinstancer-   )r3   r4   rH   bytes_emessages   ``    r$   r   r   ]   s    01LMMU4??!YYw'FWF ~01VWW01VWWM#  @'(>??>> 1%a('00 %a(gs#w(>+G44s#   ,A &CBC'+CCc                 r    g }	 t        | d      }|j                  |       |dk(  rn$dj                  |      S )Nr      
r&   )r   appendjoin)r3   linecs      r$   r   r      s?    D
qMA:	 
 88D>r&   datac                     t        t              rj                  d       st        d      dt        f fd}	  j                         dk(  r j                        S  |       S # t        j                  $ r}t        |      }t        |      d }~wt        t        f$ r0}t        |      }t        |t              rd|v rt        |       d }~ww xY w)Nzutf-8r6   r    c                     	 j                        S # t        $ r t        d      t        $ r Y nPt        j
                  $ r;} t        |       }| |t        j                  t        j                  fvr Y d } ~ nd } ~ ww xY wt        j                         }|j                  t        j                         |j                  j                               }|j!                          |rj                        S y)Nr6   r   )r   r
   r   r   r8   r9   r   r:   r;   r<   r=   r>   r?   EVENT_WRITErA   rB   rC   )rD   rE   rF   wrU   r3   s       r$   _sendzsend.<locals>._send   s    	99T?" 	R45PQQ  	|| 	+C0J!%,,0A0A!BB C		 '')T9001JJt()		99T?"s    A?A?1A::A?r   rI   )rK   r-   encoder   intrB   r   r8   r"   r   r   OSErrorr	   )r3   rU   rZ   rM   rN   s   ``   r$   r   r      s    ${{7#01LMM3 0??!99T?"7N>> 1%a('00X %a(gs#w(>+G44s)   #A* #A* *C=BC%+CC)(r:   r=   r8   typingr   r   r   _exceptionsr   r   _ssl_compatr	   r
   r   r   _utilsr   r   SOL_TCPTCP_NODELAYr   hasattrrQ   
SOL_SOCKETr   r   r   r   r1   __all__r   r\   floatr   r   bytesr   r   r-   r   r.   r&   r$   <module>ri      s      ' ' T S ;& !..&*<*<a@A 
6>"  &"3"3V5H5H!!LM
6>"  &..&2E2Er!JK
6?#  &..&2F2F!KL
6=!  &..&2D2Da!HI 
9 
9
xc5j(9: 
t 
	8E#u*$56 	4v}} 4s 4u 4nFMM e ,v}} ,E%*$5 ,# ,r&   