
    "e                     N    d dl mZ d dlmZ d dlZd dlmZ d Zdad Z	d Z
d
d	Zy)    )nested_scopes)	threadingN)	pydev_logc                  l    ddl m}   |        }|%t        j                          |j	                          y y )Nr   )get_global_debugger)_pydevd_bundle.pydevd_commr   r   current_threadenable_tracing)r   py_dbs     ?/usr/lib/python3/dist-packages/_pydev_bundle/pydev_monkey_qt.pyset_trace_in_qtr      s0    >!E  "     Fc                 T   | sy| du s| dk(  rd} | dk(  rt        j                  dd      } t        ryt        j                  d|        da| dk(  r	d}	 ddl}d} | dk(  r	 ddl	}t        |j                  |        y| d	k(  r	 ddl}t        |j                  |        y| d
k(  r	 ddl}t        |j                         y| dk(  rd}d }t        ||       yt        d|       #  	 ddl}d	} n(#  	 ddl}d
} n#  	 ddl}d} n
#  Y Y Y Y yxY wY nxY wY nxY wY xY w#  Y yxY w#  Y yxY w#  Y yxY w)zv
    This method patches qt (PySide2, PySide, PyQt4, PyQt5) so that we have hooks to set the tracing for QThread.
    NTTrueautoPYDEVD_PYQT_MODEzQt support mode: %sr   pyside2pysidepyqt5pyqt4PyQt4c                  "    dd l } | j                  S )Nr   )PyQt4.QtCoreQtCore)r   s    r   get_qt_core_modulez$patch_qt.<locals>.get_qt_core_module]   s    <<r   zUnexpected qt support mode: )osgetenv_patched_qtr   debugPySide2PysidePyQt5r   PySide2.QtCore_internal_patch_qtr   PySide.QtCorePyQt5.QtCore%_patch_import_to_patch_pyqt_on_import
ValueError)qt_support_modepatch_qt_on_importr    r!   r"   r   PySider   s           r   patch_qtr,      sg    $/V"; & ))$6? OO)?;K& !	'O  )#	!w~~? 
H	$	 v}}o> 
G	#	u||, 
G	# %	  	..@BTU _NOOi	"*	 &-O$*1 (			s   C D >D D# D!C('D(D+C21D2D5C<;D<D	>D?D DDDDDD #D'c                      t        j                  d        dz   t        ddlm}m}m  |         |         fd}dd l|_        y )Nz&Setting up Qt post-import monkeypatch..r   )patch_sys_modulepatch_reloadcancel_patches_in_sys_modulec                     | k(  s| j                        r_                 t                        | g|i |S N)
startswith
__import__r$   )	nameargskwargsbuiltinsr1   dottedr   original_importr*   s	      r   patched_importz=_patch_import_to_patch_pyqt_on_import.<locals>.patched_importw   sE    %)@"1H(*134t5d5f55r   )r   r   r5   _pydev_bundle._pydev_sys_patchr/   r0   r1   r9   )	r*   r   r/   r0   r<   r9   r1   r:   r;   s	   ``   @@@@r   r'   r'   g   sI     OO<=#%F OkkN6 6 (Hr   c                 p    t        j                  d         j                  j                   j                  j                   j                   G d d       G  fdd j
                         G fdd j                        } G fdd	 j                        }| _        | _        y )
NzPatching Qt: %sc                       e Zd Zd Zd Zy)'_internal_patch_qt.<locals>.FuncWrapperc                     || _         y r3   )	_original)selforiginals     r   __init__z0_internal_patch_qt.<locals>.FuncWrapper.__init__   s	    %DNr   c                 :    t                 | j                  |i |S r3   )r   rB   rC   r7   r8   s      r   __call__z0_internal_patch_qt.<locals>.FuncWrapper.__call__   s    !4>>42622r   N)__name__
__module____qualname__rE   rH    r   r   FuncWrapperr@      s    	&	3r   rM   c                       e Zd Z	 W j                         ZfdZ fdZd Zd Z	d Z
y#  W j                         ZY +xY w)0_internal_patch_qt.<locals>.StartedSignalWrapperc                    j                   j                  |        || _        || _        dv r|| _        y | j                  j                  | j                         | j                  j                  | j                         y N)r   r   )QObjectrE   threadoriginal_started_signalconnect_on_call)rC   rS   rT   r   r)   s      r   rE   z9_internal_patch_qt.<locals>.StartedSignalWrapper.__init__   sb    NN##D) DK$4D!"77/$$T]]3%%--dll;r   c                     dv r& | j                   j                   |      g|i |S  | j                   j                  |g|i |S rQ   )rU   rV   )rC   funcr7   r8   rM   r)   s       r   rV   z8_internal_patch_qt.<locals>.StartedSignalWrapper.connect   sS    "77+t||++K,=OOOO+t||++DB4B6BBr   c                 :     | j                   j                  |i |S r3   )rU   
disconnectrG   s      r   r[   z;_internal_patch_qt.<locals>.StartedSignalWrapper.disconnect   s    *4<<**D;F;;r   c                 :     | j                   j                  |i |S r3   )rU   emitrG   s      r   r]   z5_internal_patch_qt.<locals>.StartedSignalWrapper.emit   s    $4<<$$d5f55r   c                     t                y r3   )r   rG   s      r   rW   z9_internal_patch_qt.<locals>.StartedSignalWrapper._on_call   s    r   N)rI   rJ   rK   SignalrU   
pyqtSignalrE   rV   r[   r]   rW   )rM   r   r)   s   r   StartedSignalWrapperrO      sB    	*mmoG	<	C	<	6	3	*'')Gs	   . Ara   c                   (    e Zd Z fdZd Zd Zy))_internal_patch_qt.<locals>.ThreadWrapperc                     | g|i | | j                   j                  j                  k(  r| j                  | _        n"| j                  | _        | j                  | _        | j
                  | _         | | j
                        | _        y r3   )	__class__run	_exec_run_original_run_new_runstarted_original_started)rC   r7   r8   ra   _original_QThread_original_thread_inits      r   rE   z2_internal_patch_qt.<locals>.ThreadWrapper.__init__   sp    !$888 ~~!!%6%:%::>>%)XX"==%)\\D"/dllCDLr   c                 8    t                | j                          y r3   )r   exec_rC   s    r   rg   z3_internal_patch_qt.<locals>.ThreadWrapper._exec_run   s    JJLr   c                 6    t                | j                         S r3   r   rh   rp   s    r   ri   z2_internal_patch_qt.<locals>.ThreadWrapper._new_run       %%''r   N)rI   rJ   rK   rE   rg   ri   )ra   rl   rm   s   r   ThreadWrapperrc      s    	D	
	(r   rt   c                       e Zd Z fdZd Zy)+_internal_patch_qt.<locals>.RunnableWrapperc                 b     | g|i | | j                   | _        | j                  | _         y r3   )rf   rh   ri   )rC   r7   r8   _original_runnable_inits      r   rE   z4_internal_patch_qt.<locals>.RunnableWrapper.__init__   s,    #D:4:6:!%D}}DHr   c                 6    t                | j                         S r3   rr   rp   s    r   ri   z4_internal_patch_qt.<locals>.RunnableWrapper._new_run   rs   r   N)rI   rJ   rK   rE   ri   )rx   s   r   RunnableWrapperrv      s    	%	(r   rz   )r   r   QThreadrE   	QRunnablerR   )	r   r)   rt   rz   rM   ra   rl   rx   rm   s	   ``  @@@@@r   r$   r$      s    OO%v."NN33$..773 3 v~~ @( ( (0
(&** 
( #FN&Fr   )r   )
__future__r   "_pydev_bundle._pydev_saved_modulesr   r   _pydev_bundler   r   r   r,   r'   r$   rL   r   r   <module>r      s0    $ 8 	 # QPh)8U'r   