
    2Bf8(                    f   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&y)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y)r
   z?
    Base class for all exceptions defined by websockets.

    N__name__
__module____qualname____doc__     U/var/www/highfloat_scraper/venv/lib/python3.12/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y)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.

    Nc                .    || _         || _        || _        y Nrcvdsentrcvd_then_sent)selfr1   r2   r3   s       r+   __init__zConnectionClosed.__init__[   s     		,r*   c                   | j                   9| j                  | j                  J y| 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 r0   r4   s    r+   __str__zConnectionClosed.__str__e   s    99yy **2228**222tyyk)BCCyy **222"499+-BCC**666&&&tyykdii[II"499+-=dii[IIr*   c                z    | j                   t        j                  j                  S | j                   j                  S r/   )r1   r   	CloseCodeABNORMAL_CLOSUREcoder7   s    r+   r<   zConnectionClosed.codez   s,    99##444yy~~r*   c                H    | j                   y| j                   j                  S )N )r1   reasonr7   s    r+   r?   zConnectionClosed.reason   s    99yyr*   r/   )r1   Optional[frames.Close]r2   r@   r3   zOptional[bool]returnNonerA   str)rA   int)	r%   r&   r'   r(   r5   r8   propertyr<   r?   r)   r*   r+   r   r   L   se    $ *.	-$- %- '	-
 
-J*  
    r*   r   c                      e Zd ZdZy)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y)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      rH   r*   r   c                      e Zd ZdZy)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y)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y)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y)r   zK
    Raised when an HTTP header doesn't have a valid format or value.

    Nc                     || _         || _        y r/   namevaluer4   rQ   rR   s      r+   r5   zInvalidHeader.__init__       	
r*   c                    | j                   d| j                   dS | j                   dk(  rd| j                   dS d| j                   d| j                    S )Nzmissing z headerr>   zempty zinvalid z	 header: rR   rQ   r7   s    r+   r8   zInvalidHeader.__str__   sY    ::dii[00ZZ2DII;g..dii[	$**>>r*   r/   rQ   rD   rR   Optional[str]rA   rB   rC   r%   r&   r'   r(   r5   r8   r)   r*   r+   r   r      s    
?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.

    c                6    t         |   || d| d|        y )Nz at z in superr5   )r4   rQ   errorheaderpos	__class__s        r+   r5   zInvalidHeaderFormat.__init__   s#    %SEfX>?r*   )
rQ   rD   r^   rD   r_   rD   r`   rE   rA   rB   r%   r&   r'   r(   r5   __classcell__ra   s   @r+   r   r      s    @ @r*   r   c                      e Zd ZdZy)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      rL   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.

    c                &    t         |   d|       y )NOriginr\   )r4   originra   s     r+   r5   zInvalidOrigin.__init__   s    6*r*   )ri   rX   rA   rB   rb   rd   s   @r+   r   r      s    
+ +r*   r   c                      e Zd ZdZy)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y)r   zJ
    Raised when a handshake response rejects the WebSocket upgrade.

    c                    || _         y r/   )response)r4   rm   s     r+   r5   zInvalidStatus.__init__   s	     r*   c                6    d| j                   j                  dS )N+server rejected WebSocket connection: HTTP d)rm   status_coder7   s    r+   r8   zInvalidStatus.__str__   s#    MM--a02	
r*   N)rm   zhttp11.ResponserA   rB   rC   rY   r)   r*   r+   r   r      s    
!
r*   r   c                       e Zd ZdZddZddZy)r   zC
    Raised when a handshake response status code is invalid.

    c                     || _         || _        y r/   )rq   headers)r4   rq   rt   s      r+   r5   zInvalidStatusCode.__init__  s    &r*   c                     d| j                    S )Nro   )rq   r7   s    r+   r8   zInvalidStatusCode.__str__  s    <T=M=M<NOOr*   N)rq   rE   rt   zdatastructures.HeadersrA   rB   rC   rY   r)   r*   r+   r   r      s    
Pr*   r   c                      e Zd ZdZy)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y)r   zK
    Raised when a parameter name is repeated in an extension header.

    c                    || _         y r/   rQ   r4   rQ   s     r+   r5   zDuplicateParameter.__init__  	    	r*   c                     d| j                    S )Nzduplicate parameter: ry   r7   s    r+   r8   zDuplicateParameter.__str__  s    &tyyk22r*   NrQ   rD   rA   rB   rC   rY   r)   r*   r+   r   r     s    
3r*   r   c                       e Zd ZdZddZddZy)r   zJ
    Raised when a parameter name in an extension header is invalid.

    c                    || _         y r/   ry   rz   s     r+   r5   zInvalidParameterName.__init__#  r{   r*   c                     d| j                    S )Nzinvalid parameter name: ry   r7   s    r+   r8   zInvalidParameterName.__str__&  s    )$))55r*   Nr}   rC   rY   r)   r*   r+   r   r     s    
6r*   r   c                       e Zd ZdZddZddZy)r   zK
    Raised when a parameter value in an extension header is invalid.

    c                     || _         || _        y r/   rP   rS   s      r+   r5   zInvalidParameterValue.__init__0  rT   r*   c                    | j                   d| j                   S | j                   dk(  rd| j                   S d| j                   d| j                    S )Nzmissing value for parameter r>   zempty value for parameter zinvalid value for parameter z: rV   r7   s    r+   r8   zInvalidParameterValue.__str__4  sU    ::1$))==ZZ2/		{;;1$))BtzzlKKr*   NrW   rC   rY   r)   r*   r+   r   r   *  s    
Lr*   r   c                  2    e Zd ZdZ	 d	 	 	 	 	 	 	 ddZddZy)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.
    c                z    t        j                  |      | _        t        j                  |      | _        || _        y r/   )http
HTTPStatusstatusr   Headersrt   body)r4   r   rt   r   s       r+   r5   zAbortHandshake.__init__L  s-     oof-%--g6	r*   c                |    d| j                   ddt        | j                         dt        | j                         dS )NzHTTP rp   z, z
 headers, z bytes)r   lenrt   r   r7   s    r+   r8   zAbortHandshake.__str__W  s<    DKK?"4<< !499~f&	
r*   N)r*   )r   r	   rt   zdatastructures.HeadersLiker   bytesrA   rB   rC   rY   r)   r*   r+   r   r   =  s<    $ 			 ,	 		
 
	
r*   r   c                       e Zd ZdZddZddZy)r   zd
    Raised when a handshake gets redirected.

    This exception is an implementation detail.

    c                    || _         y r/   uri)r4   r   s     r+   r5   zRedirectHandshake.__init__g  s	    r*   c                     d| j                    S )Nzredirect to r   r7   s    r+   r8   zRedirectHandshake.__str__j  s    dhhZ((r*   N)r   rD   rA   rB   rC   rY   r)   r*   r+   r   r   _  s    )r*   r   c                      e Zd ZdZy)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y)r   zL
    Raised when connecting to a URI that isn't a valid WebSocket URI.

    c                     || _         || _        y r/   r   msg)r4   r   r   s      r+   r5   zInvalidURI.__init__  s    r*   c                8    | j                    d| j                   S )Nz isn't a valid URI: r   r7   s    r+   r8   zInvalidURI.__str__  s    ((/z::r*   N)r   rD   r   rD   rA   rB   rC   rY   r)   r*   r+   r   r   y  s    
;r*   r   c                      e Zd ZdZy)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y)r!   z3
    Raised when a frame breaks the protocol.

    Nr$   r)   r*   r+   r!   r!     r,   r*   r!   )'r(   
__future__r   r   typingr   r>   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      sj  < #   , , : 8 ) 8 v, ) ) $ % ?$ ?&	@- 	@ +M +] 
$ 
 P( P' 
3) 
3
6+ 
6L, L&
% 
D)( )%~ ;# ;& &  ' r*   