
     f'                        d dl 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 ddlmZmZmZ erddlmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w e j        d          Z e j         ej        d	                    Z e j         ej        d	                    Z G d
 deeeef                            Ze	eeeef                  eeeef                  eeeef                  eeeef                  f         Zededed         defd            Zededed         defd            Ze	 dde	eef         de defd            Z	 dde	eef         de defdZdededee         fdZ!dededee         defdZ"ddde fdZ#dS )    N)AnyStrcastListoverloadSequenceTupleTYPE_CHECKINGUnion   )
field_namefield_value)bytesifyLocalProtocolErrorvalidate)Request)Literals   [0-9]+asciic                       e Zd ZdZdZdeeeeef                  ddfdZde	fdZ
dede	fd	Zdefd
ZdefdZdedeeef         fdZdeeeef                  fdZdS )Headersa  
    A list-like interface that allows iterating over headers as byte-pairs
    of (lowercased-name, value).

    Internally we actually store the representation as three-tuples,
    including both the raw original casing, in order to preserve casing
    over-the-wire, and the lowercased name, for case-insensitive comparisions.

    r = Request(
        method="GET",
        target="/",
        headers=[("Host", "example.org"), ("Connection", "keep-alive")],
        http_version="1.1",
    )
    assert r.headers == [
        (b"host", b"example.org"),
        (b"connection", b"keep-alive")
    ]
    assert r.headers.raw_items() == [
        (b"Host", b"example.org"),
        (b"Connection", b"keep-alive")
    ]
    _full_items
full_itemsreturnNc                     || _         d S Nr   )selfr   s     O/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/h11/_headers.py__init__zHeaders.__init__f   s    %    c                 *    t          | j                  S r   )boolr   r   s    r   __bool__zHeaders.__bool__i   s    D$%%%r   otherc                 B    t          |           t          |          k    S r   )list)r   r$   s     r   __eq__zHeaders.__eq__l   s    DzzT%[[((r   c                 *    t          | j                  S r   )lenr   r"   s    r   __len__zHeaders.__len__o   s    4#$$$r   c                 @    dt          t          |                     z  S )Nz<Headers(%s)>)reprr&   r"   s    r   __repr__zHeaders.__repr__r   s    d4jj!1!111r   idxc                 ,    | j         |         \  }}}||fS r   r   )r   r.   _namevalues        r   __getitem__zHeaders.__getitem__u   s    )#.4e}r   c                 $    d | j         D             S )Nc                     g | ]
\  }}}||fS  r6   ).0raw_namer0   r2   s       r   
<listcomp>z%Headers.raw_items.<locals>.<listcomp>z   s$    MMM&8h55!MMMr   r   r"   s    r   	raw_itemszHeaders.raw_itemsy   s    MMD<LMMMMr   )__name__
__module____qualname____doc__	__slots__r   r   bytesr   r!   r#   objectr'   intr*   strr-   r3   r:   r6   r   r   r   r   K   s&        0 I&4eUE.A(B#C & & & & &&$ & & & &)F )t ) ) ) )% % % % %2# 2 2 2 2s uUE\':    N4eUl 34 N N N N N Nr   r   headers_parsedTr   c                     d S r   r6   rD   rE   s     r   normalize_and_validaterH          Cr   Fc                     d S r   r6   rG   s     r   rH   rH      rI   r   c                     d S r   r6   rG   s     r   rH   rH      s	     Cr   c                    g }d }d}| D ]\  }}|sLt          |          }t          |          }t          t          |d|           t          t          |d|           t	          |t
                    sJ t	          |t
                    sJ |}|                                }|dk    rd |                    d          D             }t          |          dk    rt          d          |
                                }t          t          |d	           ||}|                    |||f           '||k    rt          d          >|d
k    rZ|rt          dd          |                                }|dk    rt          dd          d}|                    |||f           |                    |||f           t          |          S )NFzIllegal header name {!r}zIllegal header value {!r}s   content-lengthc                 6    h | ]}|                                 S r6   )strip)r7   lengths     r   	<setcomp>z)normalize_and_validate.<locals>.<setcomp>   s     FFF&v||~~FFFr      ,r   z"conflicting Content-Length headerszbad Content-Lengths   transfer-encodingz"multiple Transfer-Encoding headersi  )error_status_hints   chunkedz,Only Transfer-Encoding: chunked is supportedT)r   r   _field_name_re_field_value_re
isinstancer@   lowersplitr)   r   pop_content_length_reappendr   )	rD   rE   new_headersseen_content_lengthsaw_transfer_encodingr1   r2   r8   lengthss	            r   rH   rH      s!    K! -8 -8e  	QD>>DUOOE^T+EtLLL_e-H%PPP$&&&&&%'''''zz||$$$FFEKK4E4EFFFG7||q  ()MNNNKKMME'0DEEE"*&+#""HdE#:;;;;$--()MNNN .)))
 % (8C   
 KKMME
""(B&)    %)!$67777$67777;r   r1   c                     g }| j         D ]c\  }}}||k    rW|                                }|                    d          D ]-}|                                }|r|                    |           .d|S )NrQ   )r   rV   rW   rN   rZ   )rD   r1   outr0   
found_namefound_raw_valuefound_split_values          r   get_comma_headerrd      s    H C*1*= 2 2&:-3355O%4%:%:4%@%@ 2 2!$5$;$;$=$=!$ 2JJ0111Jr   
new_valuesc                     g }| j         D ]#\  }}}||k    r|                    ||f           $|D ]+}|                    |                                |f           ,t          |          S r   )r   rZ   titlerH   )rD   r1   re   r[   found_raw_namera   rb   	new_values           r   set_comma_headerrj      s     .0K7>7J B B3
O@AAA 6 6	DJJLL)45555!+...r   requestr   c                 N    | j         dk     rdS t          | j        d          }d|v S )Ns   1.1Fs   expects   100-continue)http_versionrd   rD   )rk   expects     r   has_expect_100_continuero     s3     f$$ugoy99Ff$$r   )F)$retypingr   r   r   r   r   r   r	   r
   _abnfr   r   _utilr   r   r   _eventsr   r   ImportErrortyping_extensionscompilerY   encoderS   rT   r@   r   rC   HeaderTypesrH   r!   rd   rj   ro   r6   r   r   <module>rz      s\   				 V V V V V V V V V V V V V V V V V V V V * * * * * * * * 9 9 9 9 9 9 9 9 9 9 !      * * * *))))))))*t  RZ
++ -J-g6677"*/[/8899/N /N /N /N /NhuUE\*+ /N /N /Nd ue|	ucz	sEz	sCx 
G gdm     
 
K '%. W    
 
:? 7K'(37   
 ;@4  4 7K'(4 374 4  4  4  4 n,g ,U ,tE{ , , , ,^/g /U /U /PW / / / /&%Y %4 % % % % % %s   ; A	A	