
    !hH                       S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJrJr  S SKJr  S SKJr  S SKJrJr  S S	KJr  \(       a*  S S
KJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&   " S S5      r'g)    )annotations)
formatdate)TYPE_CHECKING)defer)ConnectErrorConnectionDoneConnectionLostConnectionRefusedErrorDNSLookupErrorTCPTimedOutErrorTimeoutError)ResponseFailed)signals)IgnoreRequestNotConfigured)load_object)Self)Crawler)Request)Response)Settings)Spider)StatsCollectorc            
          \ rS rSr\R
                  \\\\\	\
\\\4
rSS jr\SS j5       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)HttpCacheMiddleware"   c                    UR                  S5      (       d  [        e[        US   5      " U5      U l        [        US   5      " U5      U l        UR                  S5      U l        X l        g )NHTTPCACHE_ENABLEDHTTPCACHE_POLICYHTTPCACHE_STORAGEHTTPCACHE_IGNORE_MISSING)getboolr   r   policystorageignore_missingstats)selfsettingsr&   s      m/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/downloadermiddlewares/httpcache.py__init__HttpCacheMiddleware.__init__0   sa     344!(+=">?I"8,?#@A(K&../IJ
    c                .   UR                   (       d   eU " UR                  UR                   5      nUR                  R                  UR                  [        R                  S9  UR                  R                  UR
                  [        R
                  S9  U$ )N)signal)r&   r(   r   connectspider_openedspider_closed)clscrawleros      r)   from_crawler HttpCacheMiddleware.from_crawler8   sk    }}}  '--08M8MN8M8MNr,   c                :    U R                   R                  U5        g N)r$   open_spiderr'   spiders     r)   r0   !HttpCacheMiddleware.spider_opened@   s      (r,   c                :    U R                   R                  U5        g r8   )r$   close_spiderr:   s     r)   r1   !HttpCacheMiddleware.spider_closedC   s    !!&)r,   c                V   UR                   R                  SS5      (       a  g U R                  R                  U5      (       d  SUR                   S'   g U R                  R                  X!5      nUcT  U R                  R                  SUS9  U R                  (       a(  U R                  R                  SUS9  [        SU 35      eg UR                  R                  S	5        U R                  R                  X15      (       a  U R                  R                  S
US9  U$ X1R                   S'   g )N
dont_cacheFT_dont_cachezhttpcache/missr;   zhttpcache/ignorezIgnored request not in cache: cachedzhttpcache/hitcached_response)metagetr#   should_cache_requestr$   retrieve_responser&   	inc_valuer%   r   flagsappendis_cached_response_fresh)r'   requestr;   cachedresponses       r)   process_request#HttpCacheMiddleware.process_requestF   s    <<L%00 {{//88*.GLL' +/,,*H*H+
 !JJ  !1& A""

$$%7$G#&DWI$NOO 	##H-;;//HHJJ   @!! +9&'r,   c                   UR                   R                  SS5      (       a  U$ SUR                  ;   d  SUR                   ;   a  UR                   R                  SS 5        U$ SUR                  ;  a  [        SS9UR                  S'   UR                   R                  SS 5      nUc.  U R                  R                  S	US
9  U R                  X2X5        U$ U R                  R                  XBU5      (       a  U R                  R                  SUS
9  U$ U R                  R                  SUS
9  U R                  X2X5        U$ )NrA   FrD   rB   DateT)usegmtrE   zhttpcache/firsthandrC   zhttpcache/revalidatezhttpcache/invalidate)rF   rG   rK   popheadersr   r&   rJ   _cache_responser#   is_cached_response_valid)r'   rN   responser;   rO   s        r)   process_response$HttpCacheMiddleware.process_responseh   s%    <<L%00O x~~%',,)FLL]D1O )))'1'>HV$ +2,,*:*:;Ld*S!JJ  !6v F  7KO;;//'RRJJ  !7 G!!

3FCVwGr,   c                    UR                   R                  SS 5      nUb6  [        X R                  5      (       a  U R                  R                  SUS9  U$ g )NrE   zhttpcache/errorrecoveryrC   )rF   rU   
isinstanceDOWNLOAD_EXCEPTIONSr&   rJ   )r'   rN   	exceptionr;   rO   s        r)   process_exception%HttpCacheMiddleware.process_exception   sY     +2,,*:*:;Ld*S%*//+
 +
 JJ  !:6 J!!r,   c                    U R                   R                  X#5      (       a7  U R                  R                  SUS9  U R                  R                  XU5        g U R                  R                  SUS9  g )Nzhttpcache/storerC   zhttpcache/uncacheable)r#   should_cache_responser&   rJ   r$   store_response)r'   r;   rY   rN   rO   s        r)   rW   #HttpCacheMiddleware._cache_response   s]     ;;,,X??JJ  !26 BLL''BJJ  !8 Hr,   )r%   r#   r&   r$   N)r(   r   r&   r   returnNone)r3   r   rf   r   )r;   r   rf   rg   )rN   r   r;   r   rf   Request | Response | None)rN   r   rY   r   r;   r   rf   zRequest | Response)rN   r   r_   	Exceptionr;   r   rf   rh   )
r;   r   rY   r   rN   r   rO   zResponse | Nonerf   rg   )__name__
__module____qualname____firstlineno__r   r   r   r
   r   r   r	   r   r   OSErrorr^   r*   classmethodr5   r0   r1   rP   rZ   r`   rW   __static_attributes__ r,   r)   r   r   "   s      )*  (. 	" D*2<B	>		+4	>D		"	II I 	I
 (I 
Ir,   r   N)(
__future__r   email.utilsr   typingr   twisted.internetr   twisted.internet.errorr   r   r	   r
   r   r   r   twisted.web.clientr   scrapyr   scrapy.exceptionsr   r   scrapy.utils.miscr   typing_extensionsr   scrapy.crawlerr   scrapy.http.requestr   scrapy.http.responser   scrapy.settingsr   scrapy.spidersr   scrapy.statscollectorsr   r   rq   r,   r)   <module>r      sT    " "   "   .  : )&&+-(%5{I {Ir,   