
    3 dU                         d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ  ej        e          Z G d d          Z G d d	          ZdS )
zR
Extensions for debugging Scrapy

See documentation in docs/topics/extensions.rst
    N)Pdb)format_engine_status)format_live_refsc                   8    e Zd ZddZed             Zd Zd ZdS )StackTraceDumpNc                     || _         	 t          j        t          j        | j                   t          j        t          j        | j                   d S # t
          $ r Y d S w xY wN)crawlersignalSIGUSR2dump_stacktraceSIGQUITAttributeError)selfr
   s     7lib/python3.11/site-packages/scrapy/extensions/debug.py__init__zStackTraceDump.__init__   sd    	M&.$*>???M&.$*>????? 	 	 	DD	s   AA 
A! A!c                      | |          S r	    )clsr
   s     r   from_crawlerzStackTraceDump.from_crawler   s    s7||    c                     |                                  t          | j        j                  t	                      d}t
                              d|d| j        i           d S )N)
stackdumpsenginestatusliverefszRDumping stack trace and engine status
%(enginestatus)s
%(liverefs)s
%(stackdumps)sr
   )extra)_thread_stacksr   r
   enginer   loggerinfo)r   signumframelog_argss       r   r   zStackTraceDump.dump_stacktrace"   so    --//01DEE(**
 

 	=dl+	 	 	
 	
 	
 	
 	
r   c           	      L   t          d t          j                    D                       }d}t          j                                                    D ]Q\  }}|                    |d          }d                    t          j	        |                    }|d| d| d| dz  }R|S )Nc              3   2   K   | ]}|j         |j        fV  d S r	   )identname).0ths     r   	<genexpr>z0StackTraceDump._thread_stacks.<locals>.<genexpr>0   s+      KKr"'*KKKKKKr    z
# Thread: (z)

)
dict	threading	enumeratesys_current_framesitemsgetjoin	tracebackformat_stack)r   id2namedumpsid_r"   r'   dumps          r   r   zStackTraceDump._thread_stacks/   s    KKY5H5J5JKKKKK-//5577 	: 	:JC;;sB''D7791%8899D9$99999999EEr   r	   )__name__
__module____qualname__r   classmethodr   r   r   r   r   r   r   r      sa              [
 
 
    r   r   c                       e Zd Zd Zd ZdS )Debuggerc                 r    	 t          j         t           j        | j                   d S # t          $ r Y d S w xY wr	   )r   r   _enter_debuggerr   )r   s    r   r   zDebugger.__init__:   sF    	M&.$*>????? 	 	 	DD	s   $( 
66c                 R    t                                          |j                   d S r	   )r   	set_tracef_back)r   r!   r"   s      r   rC   zDebugger._enter_debuggerA   s     %%%%%r   N)r<   r=   r>   r   rC   r   r   r   rA   rA   9   s2          & & & & &r   rA   )__doc__loggingr   r1   r/   r6   pdbr   scrapy.utils.enginer   scrapy.utils.trackrefr   	getLoggerr<   r   r   rA   r   r   r   <module>rM      s       



               4 4 4 4 4 4 2 2 2 2 2 2		8	$	$" " " " " " " "J	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r   