
    h                       S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	J
r
Jr  S SKJr  S SKJrJr  \\\
\	\\   4   4   r\\\\   4   r\SS j5       r\SS j5       rSS	 jr\SS
 j5       r\SS j5       rSS jr S       SS jjrg)    )annotations)	b64encode)MappingMutableMappingSequence)AnyUnionoverload)
StrOrBytes)to_bytes
to_unicodec                    g N headers_raws    Q/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/w3lib/http.pyheaders_raw_to_dictr          BE    c                    g r   r   r   s    r   r   r      s    47r   c                <   U c  gU R                  5       nU Vs/ s H  o"R                  SS5      PM     nn0 nU HY  n[        U5      S:X  d  M  US   R                  5       nUS   R                  5       nXd;   a  XF   R	                  U5        MT  U/XF'   M[     U$ s  snf )a  
Convert raw headers (single multi-line bytestring)
to a dictionary.

For example:

>>> import w3lib.http
>>> w3lib.http.headers_raw_to_dict(b"Content-type: text/html\n\rAccept: gzip\n\n")   # doctest: +SKIP
{'Content-type': ['text/html'], 'Accept': ['gzip']}

Incorrect input:

>>> w3lib.http.headers_raw_to_dict(b"Content-typt gzip\n\n")
{}
>>>

Argument is ``None`` (return ``None``):

>>> w3lib.http.headers_raw_to_dict(None)
>>>

N   :      r   )
splitlinessplitlenstripappend)r   headersheaderheaders_tuplesresult_dictheader_itemitem_key
item_values           r   r   r      s    0 $$&G:AB'll4+'NB%'K%;1$q>'') ^))+
"!((4%/LK! &  Cs   Bc                    g r   r   headers_dicts    r   headers_dict_to_rawr+   C   r   r   c                    g r   r   r)   s    r   r+   r+   G   s    58r   c                `   U c  g/ nU R                  5        H  u  p#[        U[        5      (       a#  UR                  SR	                  X#/5      5        M=  [        U[
        [        45      (       d  MZ  U H$  nUR                  SR	                  X$/5      5        M&     M     SR	                  U5      $ )aw  
Returns a raw HTTP headers representation of headers

For example:

>>> import w3lib.http
>>> w3lib.http.headers_dict_to_raw({b'Content-type': b'text/html', b'Accept': b'gzip'}) # doctest: +SKIP
'Content-type: text/html\\r\\nAccept: gzip'
>>>

Note that keys and values must be bytes.

Argument is ``None`` (returns ``None``):

>>> w3lib.http.headers_dict_to_raw(None)
>>>

Ns   : s   
)items
isinstancebytesr    joinlisttuple)r*   	raw_lineskeyvaluevs        r   r+   r+   K   s    ( I"((*
eU##UZZ56e}--  SH!56 	 + <<	""r   c                ^    [        U 5       S[        U5       3nS[        [        X2S95      -   $ )a)  
Return an `Authorization` header field value for `HTTP Basic Access Authentication (RFC 2617)`_

>>> import w3lib.http
>>> w3lib.http.basic_auth_header('someuser', 'somepass')
'Basic c29tZXVzZXI6c29tZXBhc3M='

.. _HTTP Basic Access Authentication (RFC 2617): http://www.ietf.org/rfc/rfc2617.txt

:s   Basic )encoding)r   r   r   )usernamepasswordr:   auths       r   basic_auth_headerr>   k   s7     "#1Z%9$:;D y$!BCCCr   N)r   r0   returnHeadersDictOutput)r   Noner?   rA   )r   bytes | Noner?   zHeadersDictOutput | None)r*   HeadersDictInputr?   r0   )r*   rA   r?   rA   )r*   zHeadersDictInput | Noner?   rB   )z
ISO-8859-1)r;   r   r<   r   r:   strr?   r0   )
__future__r   base64r   collections.abcr   r   r   typingr   r	   r
   w3lib._typesr   
w3lib.utilr   r   r0   rC   r2   r@   r   r+   r>   r   r   r   <module>rK      s    "  = = ' ' # +5%Xe_(<"==> "5$u+#56  
 E 
 E 
 7 
 7*Z 
 E 
 E 
 8 
 8#B AMDD$.D:=D
Dr   