
    ,h!                     r   U d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$m%Z% d	gZ& e jN                   ejP                  d
            Z) e jN                  d      Z*dee+   dee+   fdZ,dee+   deee+e+f      fdZ- e jN                   ejP                  d
            Z.dedee   fdZ/ e jN                   ejP                  d
            Z0dede
eedf   fdZ1 G d d      Z2 e jN                   ejP                  d
            Z3 G d d      Z4 G d d      Z5deddfdZ6ee
e	e$   ee	e$   e	e$   f   f   e
edef   ee7edef   f   f   f   Z8eefe/e efe1e efe1eefe6eefe6eefe6e efe6e efe6e efe6ee4e2e5di
Z9e8e:d	<   y)    N)	AnyCallableDictIterableNoReturnOptionalTupleTypeUnion   )chunk_headerheader_fieldrequest_linestatus_line)DataEndOfMessageInformationalResponseRequestResponse)ReceiveBuffer)CLIENTCLOSEDDONEIDLE
MUST_CLOSE	SEND_BODYSEND_RESPONSESERVER)LocalProtocolErrorRemoteProtocolErrorSentinelvalidateREADERSasciis   [ \t]+linesreturnc              #     K   t        |       }d }|D ]e  }t        j                  |      }|rD|t        d      t	        |t
              st        |      }|dz  }|||j                         d  z  }^|| |}g || y y w)Nz%continuation line at start of headers    )iterobs_fold_rematchr   
isinstance	bytearrayend)r%   itlastliner+   s        N/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/h11/_readers.py_obsolete_line_foldr3   +   s     	eB D !!$'|()PQQdI. DLDD''D
D 
 s   B Bc              #   h   K   t        |       D ]   }t        t        |d|      }|d   |d   f " y w)Nzillegal header line: {!r}
field_namefield_value)r3   r"   header_field_re)r%   r1   matchess      r2   _decode_header_linesr9   @   sB      $E* >?D2MtT|$gm&<==>s   02bufc           
          | j                         }|| j                         rt        d      y |st        d      t        t        |d   d|d         }t        dt        t        |dd              dd|S )	Nillegal request linezno request line receivedr   zillegal request line: {!r}r   T)headers_parsed )maybe_extract_lines+is_next_line_obviously_invalid_request_liner   r"   request_line_rer   listr9   )r:   r%   r8   s      r2   maybe_read_from_IDLE_clientrD   K   s    ##%E}::<$%;<< !;<<q#?qG  )%)45tGN     c           	      Z   | j                         }|| j                         rt        d      y |st        d      t        t        |d   d|d         }|d   dn|d   }|d   dn|d   }t        |d	         }|d
k  rt        nt        } |t        t        |dd              d|||      S )Nr<   zno response line receivedr   zillegal status line: {!r}http_versions   1.1reasonrE   status_code   r   T)r=   r>   rI   rH   rG   )
r@   rA   r   r"   status_line_reintr   r   rC   r9   )r:   r%   r8   rG   rH   rI   class_s          r2   $maybe_read_from_SEND_RESPONSE_serverrN   ^   s     ##%E}::<$%;<< !<==~uQx1LeTUhWG.)1w~7N  H%-S783DFgm,-K!,s!2  )%)45! rE   c                   D    e Zd ZdeddfdZdedeeedf   fdZ	de
fdZy)ContentLengthReaderlengthr&   Nc                      || _         || _        y N)_length
_remaining)selfrQ   s     r2   __init__zContentLengthReader.__init__{   s     rE   r:   c                     | j                   dk(  r
t               S |j                  | j                         }|y | xj                   t        |      z  c_         t	        |      S )Nr   data)rU   r   maybe_extract_at_mostlenr   rV   r:   rZ   s      r2   __call__zContentLengthReader.__call__   sN    ??a>!((9<3t9$rE   c                 z    t        dj                  | j                  | j                  z
  | j                              )Nz]peer closed connection without sending complete message body (received {} bytes, expected {}))r    formatrT   rU   rV   s    r2   read_eofzContentLengthReader.read_eof   s4    !//5vt.0
 	
rE   )__name__
__module____qualname__rL   rW   r   r   r   r   r^   r   rb   r?   rE   r2   rP   rP   z   s@    !s !t !M eD,4L.M 
( 
rE   rP   c                   <    e Zd ZddZdedeeedf   fdZde	fdZ
y)ChunkedReaderr&   Nc                 .    d| _         d| _        d| _        y )Nr   rE   F)_bytes_in_chunk_bytes_to_discard_reading_trailerra   s    r2   rW   zChunkedReader.__init__   s      "% %rE   r:   c                    | j                   r1|j                         }|y t        t        t	        |                  S | j
                  r|j                  t        | j
                              }|y || j
                  d t        |       k7  rt        d|d| j
                  d      | j
                  t        |      d  | _        | j
                  ry | j
                  dk(  sJ | j                  dk(  r[|j                         }|y t        t        |d|      }t        |d   d	
      | _	        | j                  dk(  rd| _          | |      S d}nd}| j                  dkD  sJ |j                  | j                        }|y | xj                  t        |      z  c_	        | j                  dk(  r
d| _        d}nd}t        |||      S )N)r=   zmalformed chunk footer: z (expected )rE   r   zillegal chunk header: {!r}
chunk_size   )baseTFs   
)rZ   chunk_start	chunk_end)rk   r@   r   rC   r9   rj   r[   r\   r   ri   maybe_extract_next_liner"   chunk_header_rerL   r   )rV   r:   r%   rZ   r   r8   rq   rr   s           r2   r^   zChunkedReader.__call__   s     ++-E}-A%-H(IJJ!!,,S1G1G-HID|t--kD	::(.thk$BXBXA[[\]  &*%;%;CIK%HD"%%%%,,1$668L#,	G $'w|'<2#FD ##q((,%Cy KK##a''(()=)=><D	)1$%,D"II;)LLrE   c                     t        d      )NzVpeer closed connection without sending complete message body (incomplete chunked read))r    ra   s    r2   rb   zChunkedReader.read_eof   s    !(
 	
rE   )r&   N)rc   rd   re   rW   r   r   r   r   r^   r   rb   r?   rE   r2   rg   rg      s6    &0MM 0MeD,4L.M 0Md
( 
rE   rg   c                   .    e Zd Zdedee   fdZdefdZy)Http10Readerr:   r&   c                 B    |j                  d      }|y t        |      S )Niɚ;rY   )r[   r   r]   s      r2   r^   zHttp10Reader.__call__   s$    ((3<rE   c                     t               S rS   )r   ra   s    r2   rb   zHttp10Reader.read_eof   s
    ~rE   N)	rc   rd   re   r   r   r   r^   r   rb   r?   rE   r2   rw   rw      s%    M htn , rE   rw   c                     | rt        d      y )NzGot data when expecting EOF)r   )r:   s    r2   expect_nothingr{      s    
 !>??rE   .)chunkedzcontent-lengthzhttp/1.0);retypingr   r   r   r   r   r   r	   r
   r   _abnfr   r   r   r   _eventsr   r   r   r   r   _receivebufferr   _stater   r   r   r   r   r   r   r   _utilr   r    r!   r"   __all__compileencoder7   r*   bytesr3   r9   rB   rD   rK   rN   rP   rt   rg   rw   r{   strReadersTyper#   __annotations__r?   rE   r2   <module>r      sT  & 
 X X X H H Q Q )	 	 	 O N+"**0\009:bjj$x 8E? *>E?>eE5L!"> "**0\009:] x7H   .K..w78	
 (D018
 
. "**0\009:>
 >
B  $  	$x.%XX >?
?@	(38
d3c(:#:;
;<> TN/TN8]ATNNZ.VnTNNZ.Vn -  rE   