
    +DCf                       d Z ddlmZ ddlZddlZej
                  rddlmZm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, d-e      Z G d. d/e
      Z G d0 d1e	      Z G d2 d3e	      Z  G d4 d5e!      Z" G d6 d7e"      Z# G d8 d9e"      Z$ G d: d;e"      Z% G d< d=e"      Z&ejN                  	 d?	 	 	 d@d>       Z(y)Aul  
Our exception hierarchy:

* HTTPError
  x RequestError
    + TransportError
      - TimeoutException
        · ConnectTimeout
        · ReadTimeout
        · WriteTimeout
        · PoolTimeout
      - NetworkError
        · ConnectError
        · ReadError
        · WriteError
        · CloseError
      - ProtocolError
        · LocalProtocolError
        · RemoteProtocolError
      - ProxyError
      - UnsupportedProtocol
    + DecodingError
    + TooManyRedirects
  x HTTPStatusError
* InvalidURL
* CookieConflict
* StreamError
  x StreamConsumed
  x StreamClosed
  x ResponseNotRead
  x RequestNotRead
    )annotationsN   )RequestResponsec                  \     e Zd ZdZd fdZedd       Zej                  dd       Z xZS )	HTTPErrora  
    Base class for `RequestError` and `HTTPStatusError`.

    Useful for `try...except` blocks when issuing a request,
    and then calling `.raise_for_status()`.

    For example:

    ```
    try:
        response = httpx.get("https://www.example.com")
        response.raise_for_status()
    except httpx.HTTPError as exc:
        print(f"HTTP Exception for {exc.request.url} - {exc}")
    ```
    c                2    t         |   |       d | _        y Nsuper__init___requestselfmessage	__class__s     Q/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/httpx/_exceptions.pyr   zHTTPError.__init__<   s    !(,    c                H    | j                   t        d      | j                   S )Nz'The .request property has not been set.)r   RuntimeError)r   s    r   requestzHTTPError.request@   s"    == HII}}r   c                    || _         y r
   )r   )r   r   s     r   r   zHTTPError.requestF   s	    r   r   strreturnNone)r   r   )r   r   r   r   )	__name__
__module____qualname____doc__r   propertyr   setter__classcell__r   s   @r   r   r   *   s9    "-  
 ^^   r   r   c                  *     e Zd ZdZddd fdZ xZS )RequestErrorzS
    Base class for all exceptions that may occur when issuing a `.request()`.
    N)r   c               2    t         |   |       || _        y r
   r   )r   r   r   r   s      r   r   zRequestError.__init__P   s    !  r   )r   r   r   Request | Noner   r   r   r   r   r    r   r#   r$   s   @r   r&   r&   K   s     CG    r   r&   c                      e Zd ZdZy)TransportErrorzU
    Base class for all exceptions that occur at the level of the Transport API.
    Nr   r   r   r     r   r   r+   r+   [       r   r+   c                      e Zd ZdZy)TimeoutExceptionzM
    The base class for timeout errors.

    An operation has timed out.
    Nr,   r-   r   r   r0   r0   d       r   r0   c                      e Zd ZdZy)ConnectTimeoutz1
    Timed out while connecting to the host.
    Nr,   r-   r   r   r3   r3   l   r.   r   r3   c                      e Zd ZdZy)ReadTimeoutz7
    Timed out while receiving data from the host.
    Nr,   r-   r   r   r5   r5   r   r.   r   r5   c                      e Zd ZdZy)WriteTimeoutz3
    Timed out while sending data to the host.
    Nr,   r-   r   r   r7   r7   x   r.   r   r7   c                      e Zd ZdZy)PoolTimeoutzB
    Timed out waiting to acquire a connection from the pool.
    Nr,   r-   r   r   r9   r9   ~   r.   r   r9   c                      e Zd ZdZy)NetworkErrorzo
    The base class for network-related errors.

    An error occurred while interacting with the network.
    Nr,   r-   r   r   r;   r;      r1   r   r;   c                      e Zd ZdZy)	ReadErrorz2
    Failed to receive data from the network.
    Nr,   r-   r   r   r=   r=      r.   r   r=   c                      e Zd ZdZy)
WriteErrorz2
    Failed to send data through the network.
    Nr,   r-   r   r   r?   r?      r.   r   r?   c                      e Zd ZdZy)ConnectErrorz+
    Failed to establish a connection.
    Nr,   r-   r   r   rA   rA      r.   r   rA   c                      e Zd ZdZy)
CloseErrorz'
    Failed to close a connection.
    Nr,   r-   r   r   rC   rC      r.   r   rC   c                      e Zd ZdZy)
ProxyErrorzB
    An error occurred while establishing a proxy connection.
    Nr,   r-   r   r   rE   rE      r.   r   rE   c                      e Zd ZdZy)UnsupportedProtocolz
    Attempted to make a request to an unsupported protocol.

    For example issuing a request to `ftp://www.example.com`.
    Nr,   r-   r   r   rG   rG      r1   r   rG   c                      e Zd ZdZy)ProtocolErrorz$
    The protocol was violated.
    Nr,   r-   r   r   rI   rI      r.   r   rI   c                      e Zd ZdZy)LocalProtocolErrorz
    A protocol was violated by the client.

    For example if the user instantiated a `Request` instance explicitly,
    failed to include the mandatory `Host:` header, and then issued it directly
    using `client.send()`.
    Nr,   r-   r   r   rK   rK      s    r   rK   c                      e Zd ZdZy)RemoteProtocolErrorz^
    The protocol was violated by the server.

    For example, returning malformed HTTP.
    Nr,   r-   r   r   rM   rM      r1   r   rM   c                      e Zd ZdZy)DecodingErrorzG
    Decoding of the response failed, due to a malformed encoding.
    Nr,   r-   r   r   rO   rO      r.   r   rO   c                      e Zd ZdZy)TooManyRedirectsz
    Too many redirects.
    Nr,   r-   r   r   rQ   rQ      r.   r   rQ   c                  $     e Zd ZdZd fdZ xZS )HTTPStatusErrorz|
    The response had an error HTTP status of 4xx or 5xx.

    May be raised when calling `response.raise_for_status()`
    c               @    t         |   |       || _        || _        y r
   )r   r   r   response)r   r   r   rU   r   s       r   r   zHTTPStatusError.__init__   s    ! r   )r   r   r   r   rU   r   r   r   r)   r$   s   @r   rS   rS      s    ! !r   rS   c                  $     e Zd ZdZd fdZ xZS )
InvalidURLz7
    URL is improperly formed or cannot be parsed.
    c                $    t         |   |       y r
   r   r   r   s     r   r   zInvalidURL.__init__       !r   r   r)   r$   s   @r   rW   rW      s    " "r   rW   c                  $     e Zd ZdZd fdZ xZS )CookieConflictz
    Attempted to lookup a cookie by name, but multiple cookies existed.

    Can occur when calling `response.cookies.get(...)`.
    c                $    t         |   |       y r
   rY   r   s     r   r   zCookieConflict.__init__   rZ   r   r   r)   r$   s   @r   r\   r\      s    " "r   r\   c                  $     e Zd ZdZd fdZ xZS )StreamErrorz
    The base class for stream exceptions.

    The developer made an error in accessing the request stream in
    an invalid way.
    c                $    t         |   |       y r
   rY   r   s     r   r   zStreamError.__init__  rZ   r   r   r)   r$   s   @r   r_   r_   	  s    " "r   r_   c                  $     e Zd ZdZd fdZ xZS )StreamConsumedz]
    Attempted to read or stream content, but the content has already
    been streamed.
    c                (    d}t         |   |       y )Na]  Attempted to read or stream some content, but the content has already been streamed. For requests, this could be due to passing a generator as request content, and then receiving a redirect response or a secondary request as part of an authentication flow.For responses, this could be due to attempting to stream the response content more than once.rY   r   s     r   r   zStreamConsumed.__init__  s    & 	 	!r   r   r   r)   r$   s   @r   rb   rb     s    
	" 	"r   rb   c                  $     e Zd ZdZd fdZ xZS )StreamClosedz\
    Attempted to read or stream response content, but the request has been
    closed.
    c                (    d}t         |   |       y )NzDAttempted to read or stream content, but the stream has been closed.rY   r   s     r   r   zStreamClosed.__init__-  s    U 	 	!r   rd   r)   r$   s   @r   rf   rf   '  s    
" "r   rf   c                  $     e Zd ZdZd fdZ xZS )ResponseNotReadzY
    Attempted to access streaming response content, without having called `read()`.
    c                (    d}t         |   |       y )NzOAttempted to access streaming response content, without having called `read()`.rY   r   s     r   r   zResponseNotRead.__init__9      / 	 	!r   rd   r)   r$   s   @r   ri   ri   4      " "r   ri   c                  $     e Zd ZdZd fdZ xZS )RequestNotReadzX
    Attempted to access streaming request content, without having called `read()`.
    c                (    d}t         |   |       y )NzNAttempted to access streaming request content, without having called `read()`.rY   r   s     r   r   zRequestNotRead.__init__F  rk   r   rd   r)   r$   s   @r   rn   rn   A  rl   r   rn   c              #  N   K   	 d y# t         $ r}| | |_        |d}~ww xY ww)z
    A context manager that can be used to attach the given request context
    to any `RequestError` exceptions that are raised within the block.
    N)r&   r   )r   excs     r   request_contextrr   N  s/      !CK	s   %	 %	""%r
   )r   r(   r   ztyping.Iterator[None]))r    
__future__r   
contextlibtypingTYPE_CHECKING_modelsr   r   	Exceptionr   r&   r+   r0   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rS   rW   r\   r   r_   rb   rf   ri   rn   contextmanagerrr   r-   r   r   <module>rz      s  @ #  	* 	  B 9   \ ~ % " # " >   <   . N  - L | 
!i 
!" ""Y ""	", 	""[ "$
"; 
"
"k 
"
"[ 
" " r   