
     f                         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 j'         ej(        d
                    Z) e j'        d          Z*dee+         dee+         fdZ,dee+         deee+e+f                  fdZ- e j'         ej(        d
                    Z.dedee         fdZ/ e j'         ej(        d
                    Z0dede
eedf         fdZ1 G d d          Z2 e j'         ej(        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	<   dS )    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              #   B  K   t          |           }d }|D ]}t                              |          }|rZ|t          d          t	          |t
                    st          |          }|dz  }|||                                d          z  }x||V  |}||V  d S d S )Nz%continuation line at start of headers    )iterobs_fold_rematchr   
isinstance	bytearrayend)r%   itlastliner+   s        O/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/h11/_readers.py_obsolete_line_foldr3   +   s      	eB D  !!$'' 	|()PQQQdI.. ' DLDD''DD


DD




     c              #      K   t          |           D ]+}t          t          |d|          }|d         |d         fV  ,d S )Nzillegal header line: {!r}
field_namefield_value)r3   r"   header_field_re)r%   r1   matchess      r2   _decode_header_linesr:   @   s[       $E** > >?D2MtTT|$gm&<=====> >r4   bufc           
      B   |                                  }|%|                                 rt          d          d S |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   listr:   )r;   r%   r9   s      r2   maybe_read_from_IDLE_clientrE   K   s    ##%%E}::<< 	=$%;<<<t = !;<<<q#?q G  )%)4455t GN  r4   c           	         |                                  }|%|                                 rt          d          d S |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reasonr4   status_code   r   T)r>   r?   rI   rH   rG   )
rA   rB   r   r"   status_line_reintr   r   rD   r:   )r;   r%   r9   rG   rH   rI   class_s          r2   $maybe_read_from_SEND_RESPONSE_serverrN   ^   s    ##%%E}::<< 	=$%;<<<t > !<===~uQx1LeTUhWWG.)1w~7N  H%-SS783DFgm,--K!,s!2!2  6)%)4455!   r4   c                   L    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dS )ContentLengthReaderlengthr&   Nc                 "    || _         || _        d S N)_length
_remaining)selfrQ   s     r2   __init__zContentLengthReader.__init__{   s     r4   r;   c                     | j         dk    rt                      S |                    | j                   }|d S | 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__   s\    ?a>>!((99<43t99$r4   c                 l    t          d                    | 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   s8    !//5vt.0 0
 
 	
r4   )__name__
__module____qualname__rL   rW   r   r   r   r   r^   r   rb   r@   r4   r2   rP   rP   z   s        !s !t ! ! ! !M eD,4L.M    
( 
 
 
 
 
 
r4   rP   c                   D    e Zd ZddZdedeeedf         fdZde	fdZ
dS )ChunkedReaderr&   Nc                 0    d| _         d| _        d| _        d S )Nr   F)_bytes_in_chunk_bytes_to_discard_reading_trailerra   s    r2   rW   zChunkedReader.__init__   s"      "# %r4   r;   c                 &   | j         rB|                                }|d S t          t          t	          |                              S | j        dk    rH|                    | j                  }|d S | xj        t          |          z  c_        | j        dk    rd S | j        dk    sJ | j        dk    rk|	                                }|d S t          t          |d|          }t          |d         d          | _        | j        dk    rd| _          | |          S d}nd}| j        dk    sJ |                    | j                  }|d S | xj        t          |          z  c_        | j        dk    r
d	| _        d}nd}t          |||
          S )N)r>   r   zillegal chunk header: {!r}
chunk_size   )baseTF   )rZ   chunk_start	chunk_end)rk   rA   r   rD   r:   rj   r[   r\   ri   maybe_extract_next_liner"   chunk_header_rerL   r   )rV   r;   r%   rZ   r   r9   rq   rr   s           r2   r^   zChunkedReader.__call__   s     	K++--E}t-A%-H-H(I(IJJJJ!A%%,,T-CDDD|t""c$ii/""%))t%****1$$6688L#t,	 G $'w|'<2#F#F#FD #q(((,%tCyy KKK#a''''(()=>><4D		)1$$%&D"III;)LLLLr4   c                      t          d          )NzVpeer closed connection without sending complete message body (incomplete chunked read))r    ra   s    r2   rb   zChunkedReader.read_eof   s    !(
 
 	
r4   )r&   N)rc   rd   re   rW   r   r   r   r   r^   r   rb   r@   r4   r2   rg   rg      sx        & & & &,MM ,MeD,4L.M ,M ,M ,M ,M\
( 
 
 
 
 
 
r4   rg   c                   6    e Zd Zdedee         fdZdefdZdS )Http10Readerr;   r&   c                 T    |                     d          }|d S t          |          S )Niɚ;rY   )r[   r   r]   s      r2   r^   zHttp10Reader.__call__   s-    ((33<4r4   c                     t                      S rS   )r   ra   s    r2   rb   zHttp10Reader.read_eof   s    ~~r4   N)	rc   rd   re   r   r   r   r^   r   rb   r@   r4   r2   rw   rw      sU        M htn    ,      r4   rw   c                 (    | rt          d          d S )NzGot data when expecting EOF)r   )r;   s    r2   expect_nothingr{      s    
 @ !>???4r4   .)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encoder8   r*   bytesr3   r:   rC   rE   rK   rN   rP   rt   rg   rw   r{   strReadersTyper#   __annotations__r@   r4   r2   <module>r      s  & 
				 X X X X X X X X X X X X X X X X X X X X X X H H H H H H H H H H H H Q Q Q Q Q Q Q Q Q Q Q Q Q Q ) ) ) ) ) )	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 O N N N N N N N N N N N+"*0\099::bj$$x 8E?    *>E?>eE5L!"> > > > "*0\099::] x7H      .K.w7788	
 (D01   8
 
 
 
 
 
 
 
. "*0\099::;
 ;
 ;
 ;
 ;
 ;
 ;
 ;
|        $     	$x.%XX >?
?@	(38
d3c(:#:;
;<> TN/TN8]ATNNZ.VnTNNZ.Vn -       r4   