
    Mh(                        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dZ 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)Literal   s   [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     L/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/h11/_headers.py__init__zHeaders.__init__h   s    %    c                 *    t          | j                  S r   )boolr   r   s    r   __bool__zHeaders.__bool__k   s    D$%%%r    otherc                 B    t          |           t          |          k    S r   )list)r   r%   s     r   __eq__zHeaders.__eq__n   s    DzzT%[[((r    c                 *    t          | j                  S r   )lenr   r#   s    r   __len__zHeaders.__len__q   s    4#$$$r    c                 @    dt          t          |                     z  S )Nz<Headers(%s)>)reprr'   r#   s    r   __repr__zHeaders.__repr__t   s    d4jj!1!111r    idxc                 ,    | j         |         \  }}}||fS r   r   )r   r/   _namevalues        r   __getitem__zHeaders.__getitem__w   s    )#.4e}r    c                 $    d | j         D             S )Nc                     g | ]
\  }}}||fS  r7   ).0raw_namer1   r3   s       r   
<listcomp>z%Headers.raw_items.<locals>.<listcomp>|   s$    MMM&8h55!MMMr    r   r#   s    r   	raw_itemszHeaders.raw_items{   s    MMD<LMMMMr    )__name__
__module____qualname____doc__	__slots__r   r   bytesr   r"   r$   objectr(   intr+   strr.   r4   r;   r7   r    r   r   r   M   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   r7   rE   rF   s     r   normalize_and_validaterI          Cr    Fc                     d S r   r7   rH   s     r   rI   rI      rJ   r    c                     d S r   r7   rH   s     r   rI   rI      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	           t          |          t          k    rt          d	          ||}|                    |||f           N||k    rt          d          e|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 r7   )strip)r8   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
isinstancerA   lowersplitr*   r   pop_content_length_reCONTENT_LENGTH_MAX_DIGITSappendr   )	rE   rF   new_headersseen_content_lengthsaw_transfer_encodingr2   r3   r9   lengthss	            r   rI   rI      sB    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5zz555()=>>>"*&+#""HdE#:;;;;$--()MNNN .)))
 % (8C   
 KKMME
""(B&)    %)!$67777$67777;r    r2   c                     g }| j         D ]c\  }}}||k    rW|                                }|                    d          D ]-}|                                }|r|                    |           .d|S )NrR   )r   rW   rX   rO   r\   )rE   r2   outr1   
found_namefound_raw_valuefound_split_values          r   get_comma_headerrf      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   r\   titlerI   )rE   r2   rg   r]   found_raw_namerc   rd   	new_values           r   set_comma_headerrl      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_versionrf   rE   )rm   expects     r   has_expect_100_continuerq     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_extensionsr[   compilerZ   encoderT   rU   rA   r   rD   HeaderTypesrI   r"   rf   rl   rq   r7   r    r   <module>r|      sd   				 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 !      * * * *))))))))*  r  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   
 ;@6  6 7K'(6 376 6  6  6  6 r,g ,U ,tE{ , , , ,^/g /U /U /PW / / / /&%Y %4 % % % % % %s   ; A	A	