
    !h                        S r SSK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   " S S5      rg)z
StatsMailer extension sends an email when a spider finishes scraping.

Use STATSMAILER_RCPTS setting to enable and give the recipient mail address
    )annotations)TYPE_CHECKING)Spidersignals)NotConfigured)
MailSender)Deferred)Self)Crawler)StatsCollectorc                  <    \ rS rSrSS jr\SS j5       rS	S jrSrg)
StatsMailer   c                (    Xl         X l        X0l        g )N)stats
recipientsmail)selfr   r   r   s       d/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/extensions/statsmailer.py__init__StatsMailer.__init__   s    %*
%/ $	    c                2   UR                   R                  S5      nU(       d  [        e[        R                  " U5      nUR
                  (       d   eU " UR
                  X#5      nUR                  R                  UR                  [        R                  S9  U$ )NSTATSMAILER_RCPTS)signal)	settingsgetlistr   r   from_crawlerr   r   connectspider_closed)clscrawlerr   r   os        r   r   StatsMailer.from_crawler   st     ' 0 0 8 89L M
%227;}}}z08M8MNr   c                   U R                   R                  U5      nSnUSR                  S U R                   R                  5       R                  5        5       5      -  nUSUR                   S3-  nUSR                  S UR                  5        5       5      -  nU R
                  R                  U R                  SUR                   3U5      $ )NzGlobal stats


c              3  6   #    U  H  u  pUS  SU 3v   M     g7fz<50z : N .0kvs      r   	<genexpr>,StatsMailer.spider_closed.<locals>.<genexpr>-   s!     V7UtqQsG3qc*7U   z

z stats

c              3  6   #    U  H  u  pUS  SU 3v   M     g7fr(   r)   r*   s      r   r.   r/   /   s!     L7KtqQsG3qc*7Kr0   zScrapy stats for: )r   	get_statsjoinitemsnamer   sendr   )r   spiderspider_statsbodys       r   r    StatsMailer.spider_closed*   s    zz++F3!		Vtzz7K7K7M7S7S7UVVV$v{{m:..		L|7I7I7KLLLyy~~doo1CFKK=/QSWXXr   )r   r   r   N)r   r   r   z	list[str]r   r   )r"   r   returnr
   )r7   r   r;   zDeferred[None] | None)	__name__
__module____qualname____firstlineno__r   classmethodr   r    __static_attributes__r)   r   r   r   r      s!    %
  Yr   r   N)__doc__
__future__r   typingr   scrapyr   r   scrapy.exceptionsr   scrapy.mailr   twisted.internet.deferr	   typing_extensionsr
   scrapy.crawlerr   scrapy.statscollectorsr   r   r)   r   r   <module>rL      s8    #   " + "/ '&5Y Yr   