
    ,h(                        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 dZ e j.                  d	      Z e j.                   ej2                  d
            Z e j.                   ej2                  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$y# e$ r
 d dlmZ Y w xY w)    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y)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                     || _         y Nr   )selfr   s     N/var/www/html/Resume-Scraper/venv/lib/python3.12/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                 0    t        |       t        |      k(  S r   )list)r   r%   s     r   __eq__zHeaders.__eq__n   s    DzT%[((r    c                 ,    t        | j                        S r   )lenr   r#   s    r   __len__zHeaders.__len__q   s    4##$$r    c                 0    dt        t        |             z  S )Nz<Headers(%s)>)reprr'   r#   s    r   __repr__zHeaders.__repr__t   s    d4j!111r    idxc                 0    | j                   |   \  }}}||fS r   r   )r   r/   _namevalues        r   __getitem__zHeaders.__getitem__w   s"    ))#.4e}r    c                 X    | j                   D cg c]
  \  }}}||f c}}}S c c}}}w r   r   )r   raw_namer1   r3   s       r   	raw_itemszHeaders.raw_items{   s+    <@<L<LMM&8h55!MMMs   %)__name__
__module____qualname____doc__	__slots__r   r   bytesr   r"   r$   objectr(   intr+   strr.   r4   r7    r    r   r   r   M   s    0 I&4eUE.A(B#C & &&$ &)F )t )% %2# 2s uUE\': N4eUl 34 Nr    r   headers_parsedTr   c                      y r   rA   rB   rC   s     r   normalize_and_validaterF          r    Fc                      y r   rA   rE   s     r   rF   rF      rG   r    c                      y r   rA   rE   s     r   rF   rF      s     r    c                 V   g }d }d}| D ]  \  }}|s:t        |      }t        |      }t        t        |d|       t        t        |d|       t	        |t
              sJ t	        |t
              sJ |}|j                         }|dk(  r|j                  d      D ch c]  }|j                          }	}t        |	      dk7  rt        d      |	j                         }t        t        |d       t        |      t        kD  rt        d      ||}|j                  |||f       ||k7  s"t        d      |d	k(  rI|rt        d
d      |j                         }|dk7  rt        dd      d}|j                  |||f       {|j                  |||f        t        |      S c c}w )NFzIllegal header name {!r}zIllegal header value {!r}s   content-length   ,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splitstripr*   r   pop_content_length_reCONTENT_LENGTH_MAX_DIGITSappendr   )
rB   rC   new_headersseen_content_lengthsaw_transfer_encodingr2   r3   r6   lengthlengthss
             r   rF   rF      s    K! /8e D>DUOE^T+EtL_e-H%P$&&%''zz|$$49KK4EF&v||~FGF7|q ()MNNKKME'0DE5z55()=>>"*&+#""HdE#:;$-()MNN))
 %(8C 
 KKME
"(B&)  %)!$67$67_/8` ;C Gs   F&r2   c                     g }| j                   D ]V  \  }}}||k(  s|j                         }|j                  d      D ]&  }|j                         }|s|j	                  |       ( X |S )NrK   )r   rP   rQ   rR   rV   )rB   r2   outr1   
found_namefound_raw_valuefound_split_values          r   get_comma_headerra      s}    H C*1*=*= 2&:-335O%4%:%:4%@ 2!$5$;$;$=!$JJ0122 Jr    
new_valuesc                     g }| j                   D ]  \  }}}||k7  s|j                  ||f       ! |D ]#  }|j                  |j                         |f       % t        |      S r   )r   rV   titlerF   )rB   r2   rb   rW   found_raw_namer^   r_   	new_values           r   set_comma_headerrg      sw     .0K7>7J7J B3
O@AB   6	DJJL)456!+..r    requestr   c                 V    | j                   dk  ryt        | j                  d      }d|v S )Ns   1.1Fs   expects   100-continue)http_versionra   rB   )rh   expects     r   has_expect_100_continuerl     s0     f$gooy9Ff$$r    )F)%retypingr   r   r   r   r   r   r	   r
   _abnfr   r   _utilr   r   r   _eventsr   r   ImportErrortyping_extensionsrU   compilerT   encoderM   rN   r=   r   r@   HeaderTypesrF   r"   ra   rg   rl   rA   r    r   <module>rw      s"   	 V V V * 9 9 *  r  RZZ
+ -J--g67"**/[//89/NhuUE\*+ /Nd ue|	ucz	sEz	sCx 
G gdm   
 
K '%. W  
 
:?7K'(37 
 ;@6 7K'(6 376 6 r,g ,U ,tE{ ,^/g /U /U /PW /&%Y %4 %O  *))*s   D> >EE