
    !hc                        S SK Jr  S SKrS SKJrJr  S SKJrJr  S SKJ	r	  S SK
JrJr  S SK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  \R2                  " \5      r " S S5      rg)    )annotationsN)datetimetimezone)TYPE_CHECKINGAny)task)Spidersignals)NotConfigured)ScrapyJSONEncoder)JSONEncoder)Self)Crawler)StatsCollectorc                      \ rS rSrSrS0 0 S4         SS j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S jrSrg)PeriodicLog   z%Log basic scraping stats periodically      N@Fc                t   Xl         X l        SU R                  -  U l        S U l        [	        SSS9U l        [        U5      U l        UR                  S/ 5      U l	        UR                  S/ 5      U l
        [        U5      U l        UR                  S/ 5      U l        UR                  S/ 5      U l        XPl        g )Nr   T   )	sort_keysindentincludeexclude)statsinterval
multiplierr   r   encoderboolext_stats_enabledgetext_stats_includeext_stats_excludeext_delta_enabledext_delta_includeext_delta_excludeext_timing_enabled)selfr   r   	ext_stats	ext_deltar'   s         e/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/extensions/periodic_log.py__init__PeriodicLog.__init__   s     &+
'!%!5-1	$5Q$O'+I,5MM)R,H,5MM)R,H'+I,5MM)R,H,5MM)R,H(:    c                V   UR                   R                  S5      nU(       d  [        e UR                   R                  S5      n UR                   R                  S5      nUR                   R                  SS5      nU(       d  U(       d  U(       d  [        eUR                  (       d   eUc   eUc   eU " UR                  UUUU5      nUR                  R                  UR                  [        R                  S9  UR                  R                  UR                  [        R                  S9  U$ ! [        [
        4 a*    UR                   R                  S5      (       a  SS0OS n GN%f = f! [        [
        4 a*    UR                   R                  S5      (       a  SS0OS n GNFf = f)	NLOGSTATS_INTERVALPERIODIC_LOG_STATSenabledTPERIODIC_LOG_DELTAPERIODIC_LOG_TIMING_ENABLEDF)signal)settingsgetfloatr   getdict	TypeError
ValueErrorgetboolr   r
   connectspider_openedspider_closed)clscrawlerr   r)   r*   r'   os          r+   from_crawlerPeriodicLog.from_crawler2   s   !**334GH		/6/?/?/G/G$0I		/6/?/?/G/G$0I $+#3#3#;#;)5$
 Y*<}}}$$$$$$MM
 	8M8MN8M8MNE :& 	 ##++,@AA D! 	 :& 	 ##++,@AA D! 	s#   D1 E. 16E+*E+.6F('F(c                   [         R                  " [        R                  S9U l        0 U l        0 U l        [        R                  " U R                  5      U l        U R                  R                  U R                  5        g )Ntz)r   nowr   utc	time_prev
delta_prev
stats_prevr   LoopingCalllogstartr   )r(   spiders     r+   r=   PeriodicLog.spider_opened_   sN    #+<<8<<#@2424$$TXX.			&r.   c                   0 nU R                   (       a  UR                  U R                  5       5        U R                  (       a  UR                  U R	                  5       5        U R
                  (       a  UR                  U R                  5       5        [        R                  U R                  R                  U5      5        g N)r'   update
log_timingr$   	log_deltar    log_crawler_statsloggerinfor   encode)r(   datas     r+   rM   PeriodicLog.logg   sx    !""KK)*!!KK()!!KK..01DLL''-.r.   c           
        U R                   R                  R                  5        VVs0 s HQ  u  p[        U[        [
        45      (       d  M"  U R                  XR                  U R                  5      (       d  MO  X_MS     nnnUR                  5        VVs0 s H$  u  pXU R                  R                  US5      -
  _M&     nnnX0l	        SU0$ s  snnf s  snnf )Nr   delta)r   _statsitems
isinstanceintfloatparam_allowedr%   r&   rJ   r!   )r(   kv	num_statsr]   s        r+   rU   PeriodicLog.log_deltaq   s     

))//1-
1!c5\*  ""1&<&<d>T>TU AD1 	 -
 ?Hoo>OP>Oda++Aq111>OP#-
 Qs   !C)C:C+Cc                .   [         R                  " [        R                  S9nU R                  U R
                  R                  S   UXR                  -
  R                  5       XR
                  R                  S   -
  R                  5       S.nXl        SU0$ )NrE   
start_time)log_intervalri   utcnowlog_interval_realelapsedtime)	r   rG   r   rH   r   r   r^   rI   total_seconds)r(   rG   rn   s      r+   rT   PeriodicLog.log_timing|   sy    llhll+ MM**++L9"%"6!E!E!Gjj//==LLN
 ~r.   c           	         U R                   R                  R                  5        VVs0 s H4  u  pU R                  XR                  U R
                  5      (       d  M2  X_M6     nnnSU0$ s  snnf )Nr   )r   r^   r_   rc   r"   r#   )r(   rd   re   r   s       r+   rV   PeriodicLog.log_crawler_stats   sk     

))//1
1!!!%;%;T=S=ST AD1 	 

 
s   1A*A*c                   ^ U(       d  U(       d  gU H  nUT;   d  M    g   U(       a  U(       d  g[        U4S jU 5       5      $ )NTFc              3  ,   >#    U  H	  oT;   v   M     g 7frR    ).0p	stat_names     r+   	<genexpr>,PeriodicLog.param_allowed.<locals>.<genexpr>   s     37a	>7s   )any)r(   rx   r   r   rw   s    `   r+   rc   PeriodicLog.param_allowed   s<     wAI~  737333r.   c                    U R                  5         U R                  (       a7  U R                  R                  (       a  U R                  R                  5         g g g rR   )rM   r   runningstop)r(   rO   reasons      r+   r>   PeriodicLog.spider_closed   s3    
99**IINN +9r.   )rJ   r   r$   r&   r%   r    r#   r"   r'   r   r   r   rK   r   rI   N)
r   r   r   rb   r)   dict[str, Any]r*   r   r'   r   )r@   r   returnr   )rO   r	   r   None)r   r   )r   r   )rx   strr   	list[str]r   r   r   r   )rO   r	   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r,   classmethodrB   r=   rM   rU   rT   rV   rc   r>   __static_attributes__ru   r.   r+   r   r      s    /
 $&$&#(;; ; "	;
 "; !;* * *X'/	 
 
4
4'0
4;D
4	
4r.   r   )
__future__r   loggingr   r   typingr   r   twisted.internetr   scrapyr	   r
   scrapy.exceptionsr   scrapy.utils.serializer   jsonr   typing_extensionsr   scrapy.crawlerr   scrapy.statscollectorsr   	getLoggerr   rW   r   ru   r.   r+   <module>r      sJ    "  ' % ! " + 4 &&5 
		8	$E Er.   