
    !hf                    B   S SK Jr  S SKrS SKrS SKJrJrJr  S SKJr	  S SK
JrJrJr  S SKJr  S SKJr  \(       a  S SKJrJr  S S	KJr  S S
KJr  S SKJr  \R6                  " S\R8                  5      r " S S5      rSS jr " S S5      r " S S5      r  " S S5      r!g)    )annotationsN)CookieCookiePolicyDefaultCookiePolicy)	CookieJar)TYPE_CHECKINGAnycast)urlparse_cached)
to_unicode)IteratorSequence)Self)Request)Responsez\.\d+$c                      \ rS rSr  S   SS jjrSS jrSS jr\SS j5       rSS jr	   S       SS jjr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSrg)r      Nc                    U=(       d
    [        5       U l        [        U R                  5      U l        [	        5       U R                  l        X l        SU l        g )Nr   )r   policy
_CookieJarjar
_DummyLock_cookies_lockcheck_expired_frequency	processed)selfr   r   s      Z/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/http/cookies.py__init__CookieJar.__init__   s?    
 %+$C.A.C)$++6!+,C$    c                f    [        U5      n[        U5      nU R                  R                  XC5        g N)WrappedRequestWrappedResponser   extract_cookiesr   responserequestwreqwrsps        r   r%   CookieJar.extract_cookies'   s(    g&x(  ,r    c                   [        U5      n[        [        R                  " 5       5      =U R                  l        U R
                  l        [        U5      R                  nU(       d  g [        R                  U5      (       d  [        U5      nSU;  a  XCS-   /-  nOU/n/ nU H;  nX`R
                  R                  ;   d  M  XPR
                  R                  Xb5      -  nM=     U R
                  R                  U5      nU(       a7  UR                  S5      (       d!  UR                  SSR!                  U5      5        U =R"                  S-  sl        U R"                  U R$                  -  S:X  a  U R
                  R'                  5         g g )N.z.localr   z;    r   )r#   inttimer   _nowr   r   hostnameIPV4_REsearchpotential_domain_matches_cookies_cookies_for_domain_cookie_attrs
has_headeradd_unredirected_headerjoinr   r   clear_expired_cookies)r   r(   r)   req_hosthostscookieshostattrss           r   add_cookie_headerCookieJar.add_cookie_header,   s/   g&+.tyy{+;;488= #7+44~~h'',X6E("X-..JEDxx(((8877CC  &&w/22((499U3CD!>>D888A=HH**, >r    c                .    U R                   R                  $ r"   )r   r6   r   s    r   r6   CookieJar._cookiesK   s    xx   r    c                6    U R                   R                  5       $ r"   )r   clear_session_cookiesrE   s    r   rH   CookieJar.clear_session_cookiesO   s    xx--//r    c                <    U R                   R                  XU5        g r"   )r   clear)r   domainpathnames       r   rK   CookieJar.clearR   s     	vT*r    c                ,    [        U R                  5      $ r"   )iterr   rE   s    r   __iter__CookieJar.__iter__Z   s    DHH~r    c                ,    [        U R                  5      $ r"   )lenr   rE   s    r   __len__CookieJar.__len__]   s    488}r    c                :    U R                   R                  U5        g r"   )r   
set_policy)r   pols     r   rY   CookieJar.set_policy`   s    C r    c                d    [        U5      n[        U5      nU R                  R                  XC5      $ r"   )r#   r$   r   make_cookiesr&   s        r   r]   CookieJar.make_cookiesc   s+    g&x(xx$$T00r    c                :    U R                   R                  U5        g r"   )r   
set_cookie)r   cookies     r   r`   CookieJar.set_cookieh   s    F#r    c                N    U R                   R                  U[        U5      5        g r"   )r   set_cookie_if_okr#   )r   ra   r(   s      r   rd   CookieJar.set_cookie_if_okk   s    !!&.*ABr    )r   r   r   r   )Ni'  )r   zCookiePolicy | Noner   r/   )r'   r   r(   r   returnNone)r(   r   rf   rg   )rf   z'dict[str, dict[str, dict[str, Cookie]]]rf   rg   )NNN)rL   
str | NonerM   ri   rN   ri   rf   rg   )rf   zIterator[Cookie])rf   r/   )rZ   r   rf   rg   )r'   r   r(   r   rf   zSequence[Cookie])ra   r   rf   rg   )ra   r   r(   r   rf   rg   )__name__
__module____qualname____firstlineno__r   r%   rB   propertyr6   rH   rK   rR   rV   rY   r]   r`   rd   __static_attributes__ r    r   r   r      s     '+',	 #	  "%	 -
-> ! !0
 "	++ + 	+
 
+!1
$Cr    r   c                   U /n U R                  S5      S-   nU R                  S5      nX#:  a/  UR                  XS 5        U R                  SU5      S-   nX#:  a  M/  X Vs/ s H  nSU-   PM
     sn-   $ ! [         a     N$f = fs  snf )zPotential domain matches for a cookie

>>> potential_domain_matches('www.example.com')
['www.example.com', 'example.com', '.www.example.com', '.example.com']

r-   r.   N)indexrindexappend
ValueError)rL   matchesstartendds        r   r5   r5   o   s     hGS!A%mmC kNN6&>*LLe,q0E k
 w/w!cAgw///  /s   AA6 "B6
BBc                  (    \ rS rSrSS jrSS jrSrg)r      c                    g r"   rp   rE   s    r   acquire_DummyLock.acquire       r    c                    g r"   rp   rE   s    r   release_DummyLock.release   r   r    rp   Nrh   )rj   rk   rl   rm   r}   r   ro   rp   r    r   r   r      s    r    r   c                      \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	\
SS j5       r\
SS	 j5       r\
SS
 j5       r\
SS j5       r\
SS j5       rSS jrSSS jjrSS jrSS jrSrg)r#      zWraps a scrapy Request class with methods defined by urllib2.Request class to interact with CookieJar class

see http://docs.python.org/library/urllib2.html#urllib2.Request
c                    Xl         g r"   r(   )r   r(   s     r   r   WrappedRequest.__init__   s    r    c                .    U R                   R                  $ r"   )r(   urlrE   s    r   get_full_urlWrappedRequest.get_full_url   s    ||r    c                @    [        U R                  5      R                  $ r"   )r   r(   netlocrE   s    r   get_hostWrappedRequest.get_host       t||,333r    c                @    [        U R                  5      R                  $ r"   )r   r(   schemerE   s    r   get_typeWrappedRequest.get_type   r   r    c                j    [        [        U R                  R                  R	                  SS5      5      $ )ah  Unverifiable should indicate whether the request is unverifiable, as defined by RFC 2965.

It defaults to False. An unverifiable request is one whose URL the user did not have the
option to approve. For example, if the request is for an image in an
HTML document, and the user had no option to approve the automatic
fetching of the image, this should be true.
is_unverifiableF)r
   boolr(   metagetrE   s    r   r   WrappedRequest.is_unverifiable   s)     D$,,++//0A5IJJr    c                "    U R                  5       $ r"   )r   rE   s    r   full_urlWrappedRequest.full_url   s      ""r    c                "    U R                  5       $ r"   )r   rE   s    r   r@   WrappedRequest.host       }}r    c                "    U R                  5       $ r"   )r   rE   s    r   typeWrappedRequest.type   r   r    c                "    U R                  5       $ r"   )r   rE   s    r   unverifiableWrappedRequest.unverifiable   s    ##%%r    c                \    [        [        [        U R                  5      R                  5      $ r"   )r
   strr   r(   r2   rE   s    r   origin_req_hostWrappedRequest.origin_req_host   s    C6??@@r    c                2    XR                   R                  ;   $ r"   )r(   headers)r   rN   s     r   r9   WrappedRequest.has_header   s    ||++++r    Nc                j    U R                   R                  R                  X5      nUb
  [        USS9$ S $ Nreplace)errors)r(   r   r   r   )r   rN   defaultvalues       r   
get_headerWrappedRequest.get_header   s3    $$((76;6Gz%	2QTQr    c                    U R                   R                  R                  5        VVVs/ s H*  u  p[        USS9U Vs/ s H  n[        USS9PM     sn4PM,     snnn$ s  snf s  snnnf r   )r(   r   itemsr   )r   kvxs       r   header_itemsWrappedRequest.header_items   sl     ,,224

 5 1Y/:;<!QAi0!< 5
 	
 =
s   A$AA$A$c                N    U R                   R                  R                  X5        g r"   )r(   r   
appendlist)r   rN   r   s      r   r:   &WrappedRequest.add_unredirected_header   s    ''4r    r   )r(   r   )rf   r   )rf   r   )rN   r   rf   r   r"   )rN   r   r   ri   rf   ri   )rf   zlist[tuple[str, list[str]]])rN   r   r   r   rf   rg   )rj   rk   rl   rm   __doc__r   r   r   r   r   rn   r   r@   r   r   r   r9   r   r   r:   ro   rp   r    r   r#   r#      s    
 44K # #     & & A A,R
5r    r#   c                  6    \ rS rSrSS jrSS jrS	S
S jjrSrg)r$      c                    Xl         g r"   r'   )r   r'   s     r   r   WrappedResponse.__init__   s     r    c                    U $ r"   rp   rE   s    r   infoWrappedResponse.info   s    r    Nc                    U R                   R                  R                  U5       Vs/ s H  n[        USS9PM     sn$ s  snf r   )r'   r   getlistr   )r   rN   r   r   s       r   get_allWrappedResponse.get_all   sA    59]]5J5J5R5RSW5X
5XJq+5X
 	
 
s   ?r   )r'   r   )rf   r   r"   )rN   r   r   r	   rf   	list[str])rj   rk   rl   rm   r   r   r   ro   rp   r    r   r$   r$      s    !
 
r    r$   )rL   r   rf   r   )"
__future__r   rer0   http.cookiejarr   r   r   r   r   typingr   r	   r
   scrapy.utils.httpobjr   scrapy.utils.pythonr   collections.abcr   r   typing_extensionsr   scrapyr   scrapy.httpr   compileASCIIr3   r5   r   r#   r$   rp   r    r   <module>r      s    " 	  D D 2 + + 0 *2 '$
 **Y
)QC QCh0& A5 A5H

 

r    