§
    øÛg  ã                   óŒ   — d Z ddlmZ ddlZddlZddlZd„ Zd„ Zd„ Z G d„ d¦  «        Z	 G d	„ d
¦  «        Z
d„ Zd„ Zd„ Zd„ ZdS )z6 interactive debugging with PDB, the Python Debugger. é    )Úabsolute_importNc                 ó”   — |                       d¦  «        }|                     dddd¬¦  «         |                     ddd	d
¬¦  «         d S )NÚgeneralz--pdbÚusepdbÚ
store_truez0start the interactive Python debugger on errors.)ÚdestÚactionÚhelpz--pdbclsÚ
usepdb_clszmodulename:classnamezqstart a custom interactive Python debugger on errors. For example: --pdbcls=IPython.terminal.debugger:TerminalPdb)r   Úmetavarr
   )ÚgetgroupÚ
_addoption)ÚparserÚgroups     úG/granary/edev/quantum/lib/python3.11/site-packages/_pytest/debugging.pyÚpytest_addoptionr   	   sy   € Ø�OŠO˜IÑ&Ô&€EØ	×ÒØ�h |Ø?ð ñ Aô Að Að 
×ÒØ˜Ð/EðKð ñ Lô Lð Lð Lð Ló    c                  ó,   — dt          ¦   «         j        iS )NÚ	set_trace)Ú	pytestPDBr   © r   r   Úpytest_namespacer      s   € Ø�™œÔ.Ð/Ð/r   c                 óŽ  ‡— |                       d¦  «        s|                       d¦  «        r¯| j                             t          ¦   «         d¦  «         |                       d¦  «        r[|                       d¦  «                             d¦  «        \  }}t          |¦  «         t          t          j        |         |¦  «        }nt          j
        }|t          _        t          j        t          j        fŠˆfd„}t          j        t          _        | j        t          _        | t          _        | j                             |¦  «         d S )Nr   r   Ú	pdbinvokeú:c                  ó~   •— ‰ \  t           _        t          _        d t          _        t           j        t          _        d S ©N)Úpdbr   r   Ú_pluginmanagerÚ_configÚPdbÚ_pdb_cls)Úolds   €r   Úfinzpytest_configure.<locals>.fin"   s*   ø€ Ø25Ñ/�Œ•yÔ/Ø �	ÔÝ œW�	ÔÐÐr   )ÚgetvalueÚpluginmanagerÚregisterÚ	PdbInvokeÚsplitÚ
__import__ÚgetattrÚsysÚmodulesr   r!   r   r"   r   r   Úpytestr    Ú_cleanupÚappend)ÚconfigÚmodnameÚ	classnameÚpdb_clsr$   r#   s        @r   Úpytest_configurer5      s  ø€ Ø‡‚�xÑ Ô ð % F§O¢O°LÑ$AÔ$Að %ØÔ×%Ò%¥i¡k¤k°;Ñ?Ô?Ð?Ø�?Š?˜<Ñ(Ô(ð 	Ø!'§¢°Ñ!>Ô!>×!DÒ!DÀSÑ!IÔ!IÑˆG�YÝ�wÑÔÐÝ�cœk¨'Ô2°IÑ>Ô>ˆGˆGå”gˆGØ$�	ÔåŒ=�)Ô2Ð
3€Cð%ð %ð %ð %ð %õ Ô$…C„MØ%Ô3…IÔØ…IÔØ
„O×Ò˜3ÑÔÐÐÐr   c                   ó.   — e Zd ZdZdZdZej        Zd„ Z	dS )r   z) Pseudo PDB that defers to the real pdb. Nc                 óÚ  — ddl }t          j        ¦   «         j        }| j        � | j                             d¦  «        }|r|                     d¬¦  «         |j                             | j	        ¦  «        }| 
                    ¦   «          |                     dd¦  «         | j        j                             | j	        ¬¦  «         |                      ¦   «                              |¦  «         dS )	z< invoke PDB set_trace debugging, dropping any IO capturing. r   NÚcapturemanagerT©Úin_ú>z'PDB set_trace (IO-capturing turned off))r1   )Ú_pytest.configr,   Ú	_getframeÚf_backr   Ú	getpluginÚsuspendcapturer1   Úcreate_terminal_writerr    ÚlineÚsepÚhookÚpytest_enter_pdbr"   r   )ÚselfÚ_pytestÚframeÚcapmanÚtws        r   r   zpytestPDB.set_trace1   sÕ   € àÐÐÐÝ”‘”Ô&ˆØÔÐ*ØÔ(×2Ò2Ð3CÑDÔDˆFØð 0Ø×%Ò%¨$Ð%Ñ/Ô/Ð/Ø”×6Ò6°t´|ÑDÔDˆBØ�GŠG‰IŒIˆIØ�FŠF�3ÐAÑBÔBÐBØÔÔ$×5Ò5¸T¼\Ð5ÑJÔJÐJØ�Š‰Œ×!Ò! %Ñ(Ô(Ð(Ð(Ð(r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r   r!   r"   r   r   r   r   r   r   +   s:   € € € € € Ø3Ð3Ø€NØ€GØŒw€Hð)ð )ð )ð )ð )r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )r(   c                 ó"  — |j         j                             d¦  «        }|rW|                     d¬¦  «        \  }}t          j                             |¦  «         t          j                             |¦  «         t          ||j        |¦  «         d S )Nr8   Tr9   )	r1   r&   r?   r@   r,   ÚstdoutÚwriteÚ
_enter_pdbÚexcinfo)rF   ÚnodeÚcallÚreportrI   ÚoutÚerrs          r   Úpytest_exception_interactz#PdbInvoke.pytest_exception_interactA   sƒ   € Ø”Ô*×4Ò4Ð5EÑFÔFˆØð 	"Ø×,Ò,°Ð,Ñ6Ô6‰HˆC�ÝŒJ×Ò˜SÑ!Ô!Ð!ÝŒJ×Ò˜SÑ!Ô!Ð!Ý�4˜œ vÑ.Ô.Ð.Ð.Ð.r   c                 ó  — t          |¦  «                             d¦  «        D ]B}t          j                             d|z  ¦  «         t          j                             ¦   «          ŒCt          |¦  «        }t          |¦  «         d S )Nú
zINTERNALERROR> %s
)Ústrr)   r,   ÚstderrrR   ÚflushÚ_postmortem_tracebackÚpost_mortem)rF   ÚexcreprrT   rB   Útbs        r   Úpytest_internalerrorzPdbInvoke.pytest_internalerrorI   st   € Ý˜‘L”L×&Ò& tÑ,Ô,ð 	ð 	ˆDÝŒJ×ÒÐ2°DÑ8Ñ9Ô9Ð9ÝŒJ×ÒÑÔÐÐÝ" 7Ñ+Ô+ˆÝ�B‰Œˆˆˆr   N)rK   rL   rM   rZ   rd   r   r   r   r(   r(   @   s2   € € € € € ð/ð /ð /ðð ð ð ð r   r(   c                 óB  — | j         j                             d¦  «        j        }|                     ¦   «          |                     dd¦  «         |                     |¦  «         |                     dd¦  «         t          |¦  «        }t          |¦  «         d|_	        |S )NÚterminalreporterr;   Ú	tracebackzentering PDBT)
r1   r&   r?   Ú_twrB   rC   Ú
toterminalr`   ra   Ú	_pdbshown)rU   rT   ÚreprJ   rc   s        r   rS   rS   Q   s‹   € ð 
ŒÔ	"×	,Ò	,Ð-?Ñ	@Ô	@Ô	D€BØ‡G‚G�I„I€IØ‡F‚Fˆ3�ÑÔÐØ‡N‚N�2ÑÔÐØ‡F‚Fˆ3�ÑÔÐÝ	˜wÑ	'Ô	'€BÝ��O„O€OØ€C„MØ€Jr   c                 óv   — ddl m} t          | j        |¦  «        r| j        j        d         S | j        d         S )Nr   )ÚUnexpectedExceptioné   )Údoctestrm   Ú
isinstanceÚvalueÚexc_infoÚ_excinfo)rT   rm   s     r   r`   r`   `   sI   € ð ,Ð+Ð+Ð+Ð+Ð+Ý�'”-Ð!4Ñ5Ô5ð #ØŒ}Ô% aÔ(Ð(àÔ Ô"Ð"r   c                 óô   — t          dt          | ¦  «        dz
  ¦  «        }|rU| |         d         j                             dd¦  «        r.|dz  }|r'| |         d         j                             dd¦  «        °.|S )Nr   é   Ú__tracebackhide__F)ÚmaxÚlenÚf_localsÚget)ÚstackÚis     r   Ú_find_last_non_hidden_framer}   j   s�   € ÝˆA�s�5‰zŒz˜A‰~ÑÔ€AØ
ð ��a”˜”Ô$×(Ò(Ð)<¸eÑDÔDð Ø	ˆQ‰ˆð ð ��a”˜”Ô$×(Ò(Ð)<¸eÑDÔDð à€Hr   c                 óž   —  G d„ dt           j        ¦  «        } |¦   «         }|                     ¦   «          |                     d | ¦  «         d S )Nc                   ó   — e Zd Zd„ ZdS )úpost_mortem.<locals>.Pdbc                 ót   — t           j                             | ||¦  «        \  }}|€t          |¦  «        }||fS r   )r   r!   Ú	get_stackr}   )rF   ÚfÚtr{   r|   s        r   r‚   z"post_mortem.<locals>.Pdb.get_stacks   s:   € Ý”w×(Ò(¨¨q°!Ñ4Ô4‰HˆE�1ØˆyÝ/°Ñ6Ô6�Ø˜!�8ˆOr   N)rK   rL   rM   r‚   r   r   r   r!   r€   r   s#   € € € € € ð	ð 	ð 	ð 	ð 	r   r!   )r   r"   ÚresetÚinteraction)r„   r!   Úps      r   ra   ra   q   sc   € ðð ð ð ð �iÔ ñ ô ð ð 	ˆ‰Œ€AØ‡G‚G�I„I€IØ‡M‚M�$˜ÑÔÐÐÐr   )rN   Ú
__future__r   r   r,   r.   r   r   r5   r   r(   rS   r`   r}   ra   r   r   r   ú<module>r‰      sþ   ðØ <Ð <Ø &Ð &Ð &Ð &Ð &Ð &Ø 
€
€
€
Ø 
€
€
€
à €€€ðLð Lð Lð0ð 0ð 0ð ð  ð  ð*)ð )ð )ð )ð )ñ )ô )ð )ð*ð ð ð ð ñ ô ð ð"ð ð ð#ð #ð #ðð ð ð	ð 	ð 	ð 	ð 	r   