
    3 d                     P    d Z ddlZddlmZ ddlmZ ddlmZ  G d d          ZdS )zK
MemoryDebugger extension

See documentation in docs/topics/extensions.rst
    N)signals)NotConfigured)	live_refsc                   0    e Zd Zd Zed             Zd ZdS )MemoryDebuggerc                     || _         d S )N)stats)selfr	   s     :lib/python3.11/site-packages/scrapy/extensions/memdebug.py__init__zMemoryDebugger.__init__   s    


    c                     |j                             d          st           | |j                  }|j                            |j        t          j                   |S )NMEMDEBUG_ENABLED)signal)settingsgetboolr   r	   r   connectspider_closed)clscrawleros      r   from_crawlerzMemoryDebugger.from_crawler   sX    ''(:;; 	 C8MNNNr   c                 0   t          j                     | j                            dt	          t           j                  |           t          j                    D ]:\  }}|s| j                            d|j         t	          |          |           ;d S )Nzmemdebug/gc_garbage_count)spiderzmemdebug/live_refs/)	gccollectr	   	set_valuelengarbager   items__name__)r
   r   reasonr   wdicts        r   r   zMemoryDebugger.spider_closed   s    


'RZ 	 	
 	
 	
 $/++ 	 	JC J  4cl44c%jj !    	 	r   N)r!   
__module____qualname__r   classmethodr   r    r   r   r   r      sM             [
 
 
 
 
r   r   )	__doc__r   scrapyr   scrapy.exceptionsr   scrapy.utils.trackrefr   r   r'   r   r   <module>r,      s     
			       + + + + + + + + + + + +         r   