
    Xh,              
          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mZ edeeee   f   eeee   f   eeeef      eeeef      eeeef      f   Zddeeef   dedefdZdd	hZd
eeeee   f      deeeee   f      fdZ	 ddeeef   dedee   defdZ	 ddeeeedf   dee   deedf   fdZ G d deeee   f         Zy)    )	ItemsViewIterableIteratorKeysViewMappingMutableMappingSequence
ValuesView)AnyAnyStrOptionalUnioncastHeadersvalueencodingreturnc                 H    t        | t              r| S | j                  |      S N)
isinstancestrdecoder   r   s     R/home/Script/Script_env/lib/python3.12/site-packages/curl_cffi/requests/headers.pyto_strr      s    uc*5FX0FF    authorizationzproxy-authorizationitemsc              #      K   | D ]>  \  }}t        |j                               t        v rt        |t              rdnd}||f @ y w)Ns   [secure]z[secure])r   lowerSENSITIVE_HEADERSr   bytes)r   kvs      r   obfuscate_sensitive_headersr%   #   sH       1!'') 11)!U3Ad
s   AANr    c                 x    t        | t              r| n| j                  |xs d      }|r|j                         S |S )zE
    Coerce str/bytes into a strictly byte-wise HTTP header key.
    ascii)r   r"   encoder    )r   r    r   bytes_values       r   normalize_header_keyr*   ,   s=     E5)u||H<O/P  #(;8[8r   c                     | yt        | t              r| S t        | t              rt        |       j	                         S t        t        |       j	                  |xs d      S )zG
    Coerce str/bytes into a strictly byte-wise HTTP header value.
    Nzlatin-1)r   r"   intr   r(   r   r   s     r   normalize_header_valuer-   ;   sW     }% %5z  ""U""8#8y99r   c            	          e Zd ZdZ	 ddee   dee   fdZedefd       Z	e	j                  deddfd	       Z	edeeeee   f      fd
       Zdee   fdZdeee      fdZdeeee   f   fdZdeeeee   f      fdZd dededefdZd!dededeee      fdZd dee   ddfdZd"dZdedee   fdZdedee   ddfdZdeddfdZdedefdZde e   fdZ!de"fdZ#dedefdZ$defdZ%y)#r   z9
    HTTP headers, as a case-insensitive multi-dict.
    Nheadersr   c           
      H   |  t        |t              r2t        |j                        | _        |xs |j                  }|| _        y |sg | _        || _        y t        |t
              rU|j                         D cg c],  \  }}t        |d|      t        |d|      t        ||      f. c}}| _        || _        y t        |t              rt        |d   t        t        f      rXt        |d   t              rdnd}g }|D ]9  }|j                  |d      \  }}|j                  ||j                         f       ; nt        |d   t              r|}D cg c],  \  }}t        |d|      t        |d|      t        ||      f. c}}| _        || _        y c c}}w c c}}w )	NF)r    r   Tr   :   :   )maxsplit)r   r   list_listr   r   r   r*   r-   r   r"   splitappendstriptuple	_encoding)selfr/   r   r#   r$   sephlines           r   __init__zHeaders.__init__T   s    	gw'gmm,DJ37#3#3H@ "? DJ< "; ) $MMO Aq	 )%(K($J*1h7DJ8 ") &'!*sEl3'
C8cd# -D::cA:6DAqHHa^,- GAJ.  Aq	 )%(K($J*1h7DJ "9&s   91F1Fr   c                 
   | j                   \dD ]P  }| j                  D ],  \  }}	 |j                  |       ||j                  |      n| . || _          | j                   S  d| _         | j                   S # t        $ r Y  rw xY w)zn
        Header encoding is mandated as ascii, but we allow fallbacks to utf-8
        or iso-8859-1.
        )r'   utf-8z
iso-8859-1)r;   rawr   UnicodeDecodeError)r<   r   keyr   s       r   r   zHeaders.encoding}   s     >>!. ."&(( 
JC

8,272CX.
 &.DN
 ~~!. ".~~ . s   &A55	BBr   c                     || _         y r   )r;   )r<   r   s     r   r   zHeaders.encoding   s	    r   c                 X    | j                   D cg c]
  \  }}}||f c}}}S c c}}}w )zH
        Returns a list of the raw header items, as byte pairs.
        )r6   )r<   raw_key_r   s       r   rC   zHeaders.raw   s+    
 ;?**EE%6Wa% EEEs   %c                     | j                   D ci c]"  \  }}}|j                  | j                        d $ c}}j                         S c c}}w r   )r6   r   r   keys)r<   rI   rE   s      r   rK   zHeaders.keys   s;    AELIAsA

4==)4/LQQSSLs   'A	c                     i }| j                   D ]Z  \  }}}|j                  | j                        }||j                  | j                        nd}||v r||xx   d| z  cc<   V|||<   \ |j                         S )NNone, )r6   r   r   valuesr<   values_dictrI   rE   r   str_key	str_values          r   rO   zHeaders.values   s    &(!ZZ 	1MAsEjj/G7<7HT]]3fI+%G$"YK(88$'0G$	1 !!##r   c                     i }| j                   D ]Z  \  }}}|j                  | j                        }||j                  | j                        nd}||v r||xx   d| z  cc<   V|||<   \ |j                         S )z
        Return `(key, value)` items of headers. Concatenate headers
        into a single comma separated value when a key occurs multiple times.
        rM   rN   )r6   r   r   r   rP   s          r   r   zHeaders.items   s    
 ')!ZZ 	1MAsEjj/G7<7HT]]3fI+%G$"YK(88$'0G$	1   ""r   c           	          | j                   D cg c]@  \  }}}|j                  | j                        ||j                  | j                        n|fB c}}}S c c}}}w )z
        Return a list of `(key, value)` pairs of headers. Allow multiple
        occurrences of the same key without concatenating into a single
        comma separated value.
        )r6   r   r   )r<   rE   rI   r   s       r   multi_itemszHeaders.multi_items   s^     "&
 

 Q 

4==)/4/@T]]+e
 	
 
s   AArE   defaultc                 0    	 | |   S # t         $ r |cY S w xY w)z
        Return a header value. If multiple occurrences of the header occur
        then concatenate them together with commas.
        )KeyError)r<   rE   rW   s      r   getzHeaders.get   s%    
	9 	N	s    split_commasc                    |j                         j                  | j                        }| j                  D cg c]8  \  }}}|j                         |k(  r||j	                  | j                        n|: }}}}|s|S g }|D ]>  }	|j                  |	j                  d      D 
cg c]  }
|
j                          c}
       @ |S c c}}}w c c}
w )z
        Return a list of all header values for a given key.
        If `split_commas=True` is passed, then any comma separated header
        values are split into multiple return strings.
        ,)r    r(   r   r6   r   extendr7   r9   )r<   rE   r[   get_header_keyrI   item_key
item_valuerO   split_valuesr   items              r   get_listzHeaders.get_list   s     ++DMM: ,0::
 
'8Z~~>1 1;0FJdmm,JV
 
 M 	ME%++c:J K$ KL	M
 !Ls   =C$C
c                     t        |      }|D ]  }|| v s| j                  |        | j                  j                  |j                         y r   )r   popr6   r^   )r<   r/   rE   s      r   updatezHeaders.update   sE    '" 	Cd{	 	

'--(r   c                 0    t        | | j                        S )N)r   )r   r   r<   s    r   copyzHeaders.copy   s    tdmm44r   c                 j   |j                         j                  | j                        }| j                  D cg c]*  \  }}}||k(  r||j	                  | j                        n|, }}}}|dgk(  ry|r(dj                  |D cg c]  }t        |       c}      S t        |      c c}}}w c c}w )z
        Return a single header value.
        If there are multiple headers with the same key, then we concatenate
        them with commas. See: https://tools.ietf.org/html/rfc7230#section-3.2.2
        NrN   )r    r(   r   r6   r   joinr   rY   )r<   rE   normalized_keyrI   
header_keyheader_valuer   rc   s           r   __getitem__zHeaders.__getitem__   s     ++DMM: 04zz	
 
 ,:|^+ ' .
 
 TF?99E:Dc$i:;;sm
 ;s   /B)B0c                    |j                  | j                  xs d      }||j                  | j                  xs d      n|}|j                         }t        | j                        D cg c]  \  }\  }}}||k(  r| }	}}}t        |	dd       D ]  }| j                  |=  |	r|	d   }|||f| j                  |<   y| j                  j                  |||f       yc c}}}w )zs
        Set the header `key` to `value`, removing any duplicate entries.
        Retains insertion order.
        rB   Nr3   r   )r(   r;   r    	enumerater6   reversedr8   )
r<   rE   r   set_key	set_value
lookup_keyidxrI   r`   found_indexess
             r   __setitem__zHeaders.__setitem__  s    
 **T^^6w77<7HELL273e 	 ]]_
 *34::)>
 
%%a1:% 
 
 M!"-. 	 C

3	  "C&
I>DJJsOJJw
I>?
s   ,Cc                 8   |j                         j                  | j                        }t        | j                        D cg c]  \  }\  }}}|j                         |k(  r|  }}}}|st        |      t        |      D ]  }| j                  |=  yc c}}}w )z*
        Remove the header `key`.
        N)r    r(   r   rr   r6   rY   rs   )r<   rE   del_keyrw   rI   r`   pop_indexess          r   __delitem__zHeaders.__delitem__(  s     ))+$$T]]3 *34::)>
 
%%a1~~7* 
 
 3-K( 	 C

3	 
s   #Bc                     |j                         j                  | j                        }|| j                  D cg c]  \  }}}|
 c}}v S c c}}w r   )r    r(   r   r6   )r<   rE   rn   rI   s       r   __contains__zHeaders.__contains__:  s?    YY[''6
4::>iaac>>>>s   Ac                 4    t        | j                               S r   )iterrK   ri   s    r   __iter__zHeaders.__iter__>  s    DIIK  r   c                 ,    t        | j                        S r   )lenr6   ri   s    r   __len__zHeaders.__len__A  s    4::r   otherc                    	 t        |      }| j                  D cg c]
  \  }}}||f }}}}|j                  D cg c]
  \  }}}||f }}}}t        |      t        |      k(  S # t        $ r Y yw xY wc c}}}w c c}}}w )NF)r   
ValueErrorr6   sorted)r<   r   other_headersrI   rE   r   	self_list
other_lists           r   __eq__zHeaders.__eq__D  s    	#ENM 8<zzBBmaec5\B	B8E8K8KLL}q#usElL
Li F:$666  		 CLs   A* A9 B *	A65A6c                 "   | j                   j                  }d}| j                  dk7  rd| j                  }t        t	        | j                                     }t        |      }t        |      t        |      k(  }|r
| d|| dS | d|| dS )N r'   z, encoding=())	__class____name__r   r5   r%   rV   dictr   )r<   
class_nameencoding_stras_listas_dictno_duplicate_keyss         r   __repr__zHeaders.__repr__N  s    ^^,,
==G#((9:L243C3C3EFGw-LCL8 \7+l^1==Qwk,q99r   )NNr   )F)r   r   )&r   
__module____qualname____doc__r   HeaderTypesr   r@   propertyr   setterr5   r:   r"   rC   r   rK   r
   rO   r   r   rV   r   rZ   boolrd   rg   rj   rp   ry   r}   r   r   r   r,   r   r   r    r   r   r   r   O   s   
 PT'",'"?G}'"R #  0 __c d   FT%x 678 F FThsm T	$
8C=1 	$#yhsm!34 #
T%Xc](:";< 
s S C C t Xc]@S ,)h{3 )t )5s x} 0@s @8C= @T @4 s  t  $? ? ?!(3- ! 7C 7D 7:# :r   )rB   r   )collections.abcr   r   r   r   r   r   r	   r
   typingr   r   r   r   r   r   r"   r:   r   r   r!   r%   r   r*   r,   r-   r   r   r   r   <module>r      s  	 	 	 6 5C#E8E?"#U38_U5%< !U3:!G%U
# Gs G G %&;< E&(6"2234eFHV,,-. #9e99 sm9 	9  DH:eS$&':3;C=:
5$;:(L:nS(3-/0 L:r   