
    3 d4                     R    d dl mZ d dlmZ d dlmZ d dlmZ  G d de          ZdS )    )Mappingheaders_dict_to_raw)CaselessDict)
to_unicodec                        e Zd ZdZd fd	Z fdZd Zd Zd Z fd	Z	d fd
	Z
d fd	Zd ZddZd Zd Zd Zd Zd Zd ZeZ xZS )Headersz(Case insensitive http headers dictionaryNutf-8c                 X    || _         t                                          |           d S N)encodingsuper__init__)selfseqr   	__class__s      3lib/python3.11/site-packages/scrapy/http/headers.pyr   zHeaders.__init__   s(         c                 R   t          |t                    r|                                n|}i }|D ]T\  }}|                    |                     |          g                               |                     |                     Ut                                          |           d S r   )	
isinstancer   items
setdefaultnormkeyextend	normvaluer   update)r   r   iseqkvr   s        r   r   zHeaders.update   s    'W55>ciikkk3 	K 	KDAqOODLLOOR0077q8I8IJJJJtr   c                 P    |                      |                                          S )zNormalize key to bytes)_tobytestitle)r   keys     r   r   zHeaders.normkey   s    }}SYY[[)))r   c                      |g }n3t          |t          t          f          r|g}nt          |d          s|g} fd|D             S )zNormalize values to bytesN__iter__c                 :    g | ]}                     |          S  )r!   ).0xr   s     r   
<listcomp>z%Headers.normvalue.<locals>.<listcomp>$   s%    000Qa  000r   )r   strbyteshasattr)r   values   ` r   r   zHeaders.normvalue   sd     	EEU|,, 	GEE
++ 	GE0000%0000r   c                 D   t          |t                    r|S t          |t                    r|                    | j                  S t          |t
                    r't          |                              | j                  S t          dt          |                     )NzUnsupported value type: )r   r,   r+   encoder   int	TypeErrortype)r   r)   s     r   r!   zHeaders._tobytes&   s    a 	Ha 	+88DM***a 	0q66==///<477<<===r   c                 v    	 t                                          |          d         S # t          $ r Y d S w xY wN)r   __getitem__
IndexError)r   r#   r   s     r   r7   zHeaders.__getitem__/   sG    	77&&s++B// 	 	 	44	s   &* 
88c                 x    	 t                                          ||          d         S # t          $ r Y d S w xY wr5   )r   getr8   r   r#   def_valr   s      r   r:   zHeaders.get5   sG    	77;;sG,,R00 	 	 	44	s   '+ 
99c                     	 t                                          |          S # t          $ r ||                     |          cY S g cY S w xY wr   )r   r7   KeyErrorr   r;   s      r   getlistzHeaders.getlist;   sd    	77&&s+++ 	 	 	 /~~g.....III	s    $ !AAAc                     || |<   d S r   r'   )r   r#   list_s      r   setlistzHeaders.setlistC   s    S			r   r'   c                 .    |                      ||          S r   )r   )r   r#   default_lists      r   setlistdefaultzHeaders.setlistdefaultF   s    sL111r   c                     |                      |          }|                    |                     |                     || |<   d S r   )r?   r   r   )r   r#   r.   lsts       r   
appendlistzHeaders.appendlistI   s>    ll3

4>>%(()))S			r   c                 D      fd                                  D             S )Nc              3   F   K   | ]}|                     |          fV  d S r   )r?   r(   r   r   s     r   	<genexpr>z Headers.items.<locals>.<genexpr>O   s2      ::DLLOO$::::::r   keysr   s   `r   r   zHeaders.itemsN   s%    ::::diikk::::r   c                 D      fd                                  D             S )Nc                      g | ]
}|         S r'   r'   rK   s     r   r*   z"Headers.values.<locals>.<listcomp>R   s    ---AQ---r   rM   rO   s   `r   valueszHeaders.valuesQ   s%    --------r   c                      t          |           S r   r   rO   s    r   	to_stringzHeaders.to_stringT   s    "4(((r   c                 ^     t           fd                                 D                       S )z|Return headers as a CaselessDict with unicode keys
        and unicode values. Multiple values are joined with ','.
        c              3      K   | ]F\  }}t          |j                   t          d                    |          j                   fV  GdS ))r      ,N)r   r   join)r(   r#   r.   r   s      r   rL   z*Headers.to_unicode_dict.<locals>.<genexpr>[   so       
 

 U 3777499U++dmDDD
 
 
 
 
 
r   )r   r   rO   s   `r   to_unicode_dictzHeaders.to_unicode_dictW   sG      
 
 
 

 #jjll
 
 
 
 
 	
r   c                 ,    |                      |           S r   r   rO   s    r   __copy__zHeaders.__copy__c   s    ~~d###r   )Nr
   r   )r'   )__name__
__module____qualname____doc__r   r   r   r   r!   r7   r:   r?   rB   rE   rH   r   rR   rT   rY   r\   copy__classcell__r[   s   @r   r	   r	   	   sV       22         * * *	1 	1 	1> > >                2 2 2 2  
; ; ;. . .) ) )

 

 

$ $ $ DDDDDr   r	   N)	collections.abcr   
w3lib.httpr   scrapy.utils.datatypesr   scrapy.utils.pythonr   r	   r'   r   r   <module>rg      s    # # # # # # * * * * * * / / / / / / * * * * * *] ] ] ] ]l ] ] ] ] ]r   