
    i8(                       d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddlm
Z
 g dZ G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2ee!          Z" G d3 d4e          Z# G d5 d6e          Z$ G d7 d8e          Z%e%Z&dS )9ay  
:mod:`websockets.exceptions` defines the following exception hierarchy:

* :exc:`WebSocketException`
    * :exc:`ConnectionClosed`
        * :exc:`ConnectionClosedError`
        * :exc:`ConnectionClosedOK`
    * :exc:`InvalidHandshake`
        * :exc:`SecurityError`
        * :exc:`InvalidMessage`
        * :exc:`InvalidHeader`
            * :exc:`InvalidHeaderFormat`
            * :exc:`InvalidHeaderValue`
            * :exc:`InvalidOrigin`
            * :exc:`InvalidUpgrade`
        * :exc:`InvalidStatus`
        * :exc:`InvalidStatusCode` (legacy)
        * :exc:`NegotiationError`
            * :exc:`DuplicateParameter`
            * :exc:`InvalidParameterName`
            * :exc:`InvalidParameterValue`
        * :exc:`AbortHandshake`
        * :exc:`RedirectHandshake`
    * :exc:`InvalidState`
    * :exc:`InvalidURI`
    * :exc:`PayloadTooBig`
    * :exc:`ProtocolError`

    )annotationsN)Optional   )datastructuresframeshttp11)
StatusLike)WebSocketExceptionConnectionClosedConnectionClosedErrorConnectionClosedOKInvalidHandshakeSecurityErrorInvalidMessageInvalidHeaderInvalidHeaderFormatInvalidHeaderValueInvalidOriginInvalidUpgradeInvalidStatusInvalidStatusCodeNegotiationErrorDuplicateParameterInvalidParameterNameInvalidParameterValueAbortHandshakeRedirectHandshakeInvalidState
InvalidURIPayloadTooBigProtocolErrorWebSocketProtocolErrorc                      e Zd ZdZdS )r
   z?
    Base class for all exceptions defined by websockets.

    N__name__
__module____qualname____doc__     [/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/websockets/exceptions.pyr
   r
   E              r*   r
   c                  V    e Zd ZdZ	 ddd
ZddZedd            Zedd            ZdS )r   aG  
    Raised when trying to interact with a closed connection.

    Attributes:
        rcvd (Optional[Close]): if a close frame was received, its code and
            reason are available in ``rcvd.code`` and ``rcvd.reason``.
        sent (Optional[Close]): if a close frame was sent, its code and reason
            are available in ``sent.code`` and ``sent.reason``.
        rcvd_then_sent (Optional[bool]): if close frames were received and
            sent, this attribute tells in which order this happened, from the
            perspective of this side of the connection.

    NrcvdOptional[frames.Close]sentrcvd_then_sentOptional[bool]returnNonec                0    || _         || _        || _        d S Nr.   r0   r1   )selfr.   r0   r1   s       r+   __init__zConnectionClosed.__init__[   s      		,r*   strc                    | j         &| j        | j        J dS | j        J d| j         dS | j        | j        J d| j          dS | j        J | j        rd| j          d| j         S d| j         d| j          S )Nzno close frame received or sentzsent z; no close frame receivedz	received z; no close frame sentz; then sent z; then received r7   r8   s    r+   __str__zConnectionClosed.__str__e   s    9y *22288*222CtyCCCCy *222C49CCCC*666& JItyIIdiIIII49IIdiIIIr*   intc                J    | j         t          j        j        S | j         j        S r6   )r.   r   	CloseCodeABNORMAL_CLOSUREcoder<   s    r+   rB   zConnectionClosed.codez   s     9#44y~r*   c                ,    | j         dS | j         j        S )N )r.   reasonr<   s    r+   rE   zConnectionClosed.reason   s    92yr*   r6   )r.   r/   r0   r/   r1   r2   r3   r4   r3   r:   )r3   r>   )	r%   r&   r'   r(   r9   r=   propertyrB   rE   r)   r*   r+   r   r   L   s         $ *.	- - - - -J J J J*    X
       X     r*   r   c                      e Zd ZdZdS )r   z
    Like :exc:`ConnectionClosed`, when the connection terminated with an error.

    A close frame with a code other than 1000 (OK) or 1001 (going away) was
    received or sent, or the closing handshake didn't complete properly.

    Nr$   r)   r*   r+   r   r                 r*   r   c                      e Zd ZdZdS )r   z
    Like :exc:`ConnectionClosed`, when the connection terminated properly.

    A close code with code 1000 (OK) or 1001 (going away) or without a code was
    received and sent.

    Nr$   r)   r*   r+   r   r      rI   r*   r   c                      e Zd ZdZdS )r   zK
    Raised during the handshake when the WebSocket connection fails.

    Nr$   r)   r*   r+   r   r      r,   r*   r   c                      e Zd ZdZdS )r   zs
    Raised when a handshake request or response breaks a security rule.

    Security limits are hard coded.

    Nr$   r)   r*   r+   r   r                 r*   r   c                      e Zd ZdZdS )r   zD
    Raised when a handshake request or response is malformed.

    Nr$   r)   r*   r+   r   r      r,   r*   r   c                  $    e Zd ZdZddd	Zdd
ZdS )r   zK
    Raised when an HTTP header doesn't have a valid format or value.

    Nnamer:   valueOptional[str]r3   r4   c                "    || _         || _        d S r6   rP   rQ   r8   rP   rQ   s      r+   r9   zInvalidHeader.__init__       	


r*   c                v    | j         d| j         dS | j         dk    rd| j         dS d| j         d| j          S )Nzmissing z headerrD   zempty zinvalid z	 header: rQ   rP   r<   s    r+   r=   zInvalidHeader.__str__   sW    :0di0000Z2.DI....>di>>$*>>>r*   r6   rP   r:   rQ   rR   r3   r4   rF   r%   r&   r'   r(   r9   r=   r)   r*   r+   r   r      sK         
    ? ? ? ? ? ?r*   r   c                  $     e Zd ZdZd fd
Z xZS )r   z
    Raised when an HTTP header cannot be parsed.

    The format of the header doesn't match the grammar for that header.

    rP   r:   errorheaderposr>   r3   r4   c                \    t                                          || d| d|            d S )Nz at z in superr9   )r8   rP   r\   r]   r^   	__class__s        r+   r9   zInvalidHeaderFormat.__init__   s9    %>>S>>f>>?????r*   )
rP   r:   r\   r:   r]   r:   r^   r>   r3   r4   r%   r&   r'   r(   r9   __classcell__rb   s   @r+   r   r      sQ         @ @ @ @ @ @ @ @ @ @r*   r   c                      e Zd ZdZdS )r   z
    Raised when an HTTP header has a wrong value.

    The format of the header is correct but a value isn't acceptable.

    Nr$   r)   r*   r+   r   r      rM   r*   r   c                  $     e Zd ZdZd fdZ xZS )r   zD
    Raised when the Origin header in a request isn't allowed.

    originrR   r3   r4   c                L    t                                          d|           d S )NOriginr`   )r8   rh   rb   s     r+   r9   zInvalidOrigin.__init__   s#    6*****r*   )rh   rR   r3   r4   rc   re   s   @r+   r   r      sG         
+ + + + + + + + + +r*   r   c                      e Zd ZdZdS )r   zF
    Raised when the Upgrade or Connection header isn't correct.

    Nr$   r)   r*   r+   r   r      r,   r*   r   c                  "    e Zd ZdZd
dZddZd	S )r   zJ
    Raised when a handshake response rejects the WebSocket upgrade.

    responsehttp11.Responser3   r4   c                    || _         d S r6   )rm   )r8   rm   s     r+   r9   zInvalidStatus.__init__   s     r*   r:   c                "    d| j         j        dS )N+server rejected WebSocket connection: HTTP d)rm   status_coder<   s    r+   r=   zInvalidStatus.__str__   s!    2M-12 2	
r*   N)rm   rn   r3   r4   rF   rZ   r)   r*   r+   r   r      sF         
! ! ! !
 
 
 
 
 
r*   r   c                  "    e Zd ZdZddZdd
ZdS )r   zC
    Raised when a handshake response status code is invalid.

    rs   r>   headersdatastructures.Headersr3   r4   c                "    || _         || _        d S r6   )rs   ru   )r8   rs   ru   s      r+   r9   zInvalidStatusCode.__init__  s    &r*   r:   c                    d| j          S )Nrq   )rs   r<   s    r+   r=   zInvalidStatusCode.__str__  s    OT=MOOOr*   N)rs   r>   ru   rv   r3   r4   rF   rZ   r)   r*   r+   r   r      sL         
   P P P P P Pr*   r   c                      e Zd ZdZdS )r   z6
    Raised when negotiating an extension fails.

    Nr$   r)   r*   r+   r   r   	  r,   r*   r   c                  "    e Zd ZdZd	dZd
dZdS )r   zK
    Raised when a parameter name is repeated in an extension header.

    rP   r:   r3   r4   c                    || _         d S r6   rP   r8   rP   s     r+   r9   zDuplicateParameter.__init__      			r*   c                    d| j          S )Nzduplicate parameter: r|   r<   s    r+   r=   zDuplicateParameter.__str__  s    2ty222r*   NrP   r:   r3   r4   rF   rZ   r)   r*   r+   r   r     sF         
   3 3 3 3 3 3r*   r   c                  "    e Zd ZdZd	dZd
dZdS )r   zJ
    Raised when a parameter name in an extension header is invalid.

    rP   r:   r3   r4   c                    || _         d S r6   r|   r}   s     r+   r9   zInvalidParameterName.__init__#  r~   r*   c                    d| j          S )Nzinvalid parameter name: r|   r<   s    r+   r=   zInvalidParameterName.__str__&  s    5$)555r*   Nr   rF   rZ   r)   r*   r+   r   r     sF         
   6 6 6 6 6 6r*   r   c                  "    e Zd ZdZddZdd	Zd
S )r   zK
    Raised when a parameter value in an extension header is invalid.

    rP   r:   rQ   rR   r3   r4   c                "    || _         || _        d S r6   rT   rU   s      r+   r9   zInvalidParameterValue.__init__0  rV   r*   c                r    | j         
d| j         S | j         dk    r
d| j         S d| j         d| j          S )Nzmissing value for parameter rD   zempty value for parameter zinvalid value for parameter z: rX   r<   s    r+   r=   zInvalidParameterValue.__str__4  sQ    :=$)===Z2;	;;;K$)KKtzKKKr*   NrY   rF   rZ   r)   r*   r+   r   r   *  sL         
   L L L L L Lr*   r   c                  &    e Zd ZdZ	 dddZddZdS )r   a  
    Raised to abort the handshake on purpose and return an HTTP response.

    This exception is an implementation detail.

    The public API
    is :meth:`~websockets.server.WebSocketServerProtocol.process_request`.

    Attributes:
        status (~http.HTTPStatus): HTTP status code.
        headers (Headers): HTTP response headers.
        body (bytes): HTTP response body.
    r*   statusr	   ru   datastructures.HeadersLikebodybytesr3   r4   c                x    t          j        |          | _        t          j        |          | _        || _        d S r6   )http
HTTPStatusr   r   Headersru   r   )r8   r   ru   r   s       r+   r9   zAbortHandshake.__init__L  s2     of--%-g66			r*   r:   c                n    d| j         ddt          | j                   dt          | j                   dS )NzHTTP rr   z, z
 headers, z bytes)r   lenru   r   r<   s    r+   r=   zAbortHandshake.__str__W  sN    &DK% & &4<  & &49~~& & &	
r*   N)r*   )r   r	   ru   r   r   r   r3   r4   rF   rZ   r)   r*   r+   r   r   =  sP         $ 		 	 	 	 	
 
 
 
 
 
r*   r   c                  "    e Zd ZdZd	dZd
dZdS )r   zd
    Raised when a handshake gets redirected.

    This exception is an implementation detail.

    urir:   r3   r4   c                    || _         d S r6   r   )r8   r   s     r+   r9   zRedirectHandshake.__init__g  s    r*   c                    d| j          S )Nzredirect to r   r<   s    r+   r=   zRedirectHandshake.__str__j  s    (dh(((r*   N)r   r:   r3   r4   rF   rZ   r)   r*   r+   r   r   _  sF            ) ) ) ) ) )r*   r   c                      e Zd ZdZdS )r   z
    Raised when an operation is forbidden in the current state.

    This exception is an implementation detail.

    It should never be raised in normal circumstances.

    Nr$   r)   r*   r+   r   r   n  s           r*   r   c                  "    e Zd ZdZd
dZddZd	S )r   zL
    Raised when connecting to a URI that isn't a valid WebSocket URI.

    r   r:   msgr3   r4   c                "    || _         || _        d S r6   r   r   )r8   r   r   s      r+   r9   zInvalidURI.__init__  s    r*   c                $    | j          d| j         S )Nz isn't a valid URI: r   r<   s    r+   r=   zInvalidURI.__str__  s    (:::::r*   N)r   r:   r   r:   r3   r4   rF   rZ   r)   r*   r+   r   r   y  sF         
   ; ; ; ; ; ;r*   r   c                      e Zd ZdZdS )r    zS
    Raised when receiving a frame with a payload exceeding the maximum size.

    Nr$   r)   r*   r+   r    r      r,   r*   r    c                      e Zd ZdZdS )r!   z3
    Raised when a frame breaks the protocol.

    Nr$   r)   r*   r+   r!   r!     r,   r*   r!   )'r(   
__future__r   r   typingr   rD   r   r   r   r	   __all__	Exceptionr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   AssertionErrorr   r   r    r!   r"   r)   r*   r+   <module>r      s   < # " " " " "        , , , , , , , , , ,        :       8  8  8  8  8 ) 8  8  8 v    ,       )       )       $       %   ? ? ? ? ?$ ? ? ?&	@ 	@ 	@ 	@ 	@- 	@ 	@ 	@       + + + + +M + + +    ]   
 
 
 
 
$ 
 
 
 P P P P P( P P P    '   
3 
3 
3 
3 
3) 
3 
3 
3
6 
6 
6 
6 
6+ 
6 
6 
6L L L L L, L L L&
 
 
 
 
% 
 
 
D) ) ) ) )( ) ) )    %~   ; ; ; ; ;# ; ; ;    &       &    '   r*   