
    3 dA                         d Z ddlZddlZ ej        e          Z G d d          Z G d de          Z G d de          ZdS )	z0
Scrapy extension for collecting scraping stats
    Nc                   f    e Zd Zd ZddZddZddZddZdd	Zdd
Z	ddZ
ddZd Zd Zd ZdS )StatsCollectorc                 R    |j                             d          | _        i | _        d S )N
STATS_DUMP)settingsgetbool_dump_stats)selfcrawlers     6lib/python3.11/site-packages/scrapy/statscollectors.py__init__zStatsCollector.__init__   s%    %--l;;
    Nc                 8    | j                             ||          S N)r
   getr   keydefaultspiders       r   	get_valuezStatsCollector.get_value   s    {sG,,,r   c                     | j         S r   r
   r   r   s     r   	get_statszStatsCollector.get_stats   s
    {r   c                     || j         |<   d S r   r   r   r   valuer   s       r   	set_valuezStatsCollector.set_value   s     Cr   c                     || _         d S r   r   r   statsr   s      r   	set_statszStatsCollector.set_stats   s    r      r   c                 L    | j         }|                    ||          |z   ||<   d S r   )r
   
setdefault)r   r   countstartr   ds         r   	inc_valuezStatsCollector.inc_value   s)    Kc5))E1#r   c                 h    t          | j                            ||          |          | j        |<   d S r   )maxr
   r&   r   s       r   	max_valuezStatsCollector.max_value   0    t{55c5AA5IICr   c                 h    t          | j                            ||          |          | j        |<   d S r   )minr
   r&   r   s       r   	min_valuezStatsCollector.min_value"   r.   r   c                 8    | j                                          d S r   )r
   clearr   s     r   clear_statszStatsCollector.clear_stats%   s    r   c                     d S r    r   s     r   open_spiderzStatsCollector.open_spider(       r   c                     | j         r8t                              dt          j        | j                  z   d|i           |                     | j        |           d S )NzDumping Scrapy stats:
r   )extra)r	   loggerinfopprintpformatr
   _persist_stats)r   r   reasons      r   close_spiderzStatsCollector.close_spider+   sc    : 	KK)FN4;,G,GG(     	DK00000r   c                     d S r   r6   r!   s      r   r?   zStatsCollector._persist_stats3   r8   r   NNr   r$   r   N)__name__
__module____qualname__r   r   r   r   r#   r*   r-   r1   r4   r7   rA   r?   r6   r   r   r   r   
   s          - - - -   ! ! ! !   2 2 2 2J J J JJ J J J     1 1 1    r   r   c                   $     e Zd Z fdZd Z xZS )MemoryStatsCollectorc                 X    t                                          |           i | _        d S r   )superr   spider_stats)r   r   	__class__s     r   r   zMemoryStatsCollector.__init__8   s)    !!!r   c                 $    || j         |j        <   d S r   )rL   namer!   s      r   r?   z#MemoryStatsCollector._persist_stats<   s    ).&+&&&r   )rE   rF   rG   r   r?   __classcell__)rM   s   @r   rI   rI   7   sG            / / / / / / /r   rI   c                   >    e Zd Zd
dZddZddZddZddZdd	ZdS )DummyStatsCollectorNc                     |S r   r6   r   s       r   r   zDummyStatsCollector.get_valueA   s    r   c                     d S r   r6   r   s       r   r   zDummyStatsCollector.set_valueD   r8   r   c                     d S r   r6   r!   s      r   r#   zDummyStatsCollector.set_statsG   r8   r   r$   r   c                     d S r   r6   )r   r   r'   r(   r   s        r   r*   zDummyStatsCollector.inc_valueJ   r8   r   c                     d S r   r6   r   s       r   r-   zDummyStatsCollector.max_valueM   r8   r   c                     d S r   r6   r   s       r   r1   zDummyStatsCollector.min_valueP   r8   r   rC   r   rD   )	rE   rF   rG   r   r   r#   r*   r-   r1   r6   r   r   rR   rR   @   s                            r   rR   )	__doc__loggingr=   	getLoggerrE   r;   r   rI   rR   r6   r   r   <module>r\      s      		8	$	$* * * * * * * *Z/ / / / /> / / /    .     r   