§ |<ˆjº4ãó0—dZddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd lm Z dd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z er ddl!m"Z"ddl#m$Z$de%de e%e%ffd„Z&deddfd„Z'deddfd„Z(Gd„d ¦«Z)Gd!„d"¦«Z*Gd#„d$¦«Z+d%„Z,d&„Z-d'ed(ee.d)e de fd*„Z/d(ee.dej0fd+„Z1d,ej0ddfd-„Z2dS).z4Interactive debugging with PDB, the Python Debugger.éN)ÚAny)ÚCallable)Ú Generator)ÚList)ÚOptional)ÚTuple)ÚType)Ú TYPE_CHECKING)ÚUnion)Úoutcomes)Ú ExceptionInfo)ÚConfig)ÚConftestImportFailure)Úhookimpl)ÚPytestPluginManager)ÚParser)Ú UsageError)ÚNode)Ú BaseReport)ÚCaptureManager)ÚCallInfoÚvalueÚreturncó’— | d¦«\}}n*#t$r}tj|›d�¦«|‚d}~wwxYw||fS)z#Validate syntax of --pdbcls option.ú:z) is not in the format 'modname:classname'N)ÚsplitÚ ValueErrorÚargparseÚArgumentTypeError)rÚmodnameÚ classnameÚes úc/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/_pytest/debugging.pyÚ_validate_usepdb_clsr$!so€ðØ"Ÿ[š[¨Ñ-Ô-ш��øÝ ðððÝÔ(ØÐ AÐ AÐ Añ ô àð øøøøðøøøð �YÐ Ðs‚› A¥=½AÚparsercóÒ—| d¦«}| dddd¬¦«| ddd td ¬ ¦«| d d dd¬¦«dS)NÚgeneralz--pdbÚusepdbÚ store_truezDStart the interactive Python debugger on errors or KeyboardInterrupt)ÚdestÚactionÚhelpz--pdbclsÚ usepdb_clszmodulename:classnamez{Specify a custom interactive Python debugger for use with --pdb.For example: --pdbcls=IPython.terminal.debugger:TerminalPdb)r*ÚmetavarÚtyper,z--traceÚtracez(Immediately break when running each test)ÚgetgroupÚ _addoptionr$)r%Úgroups r#Úpytest_addoptionr4,s¢€Ø �OŠO˜IÑ &Ô &€EØ ×ÒØØ ØØ Sð ñôðð  ×ÒØØ Ø&Ý !ðFð ñôðð ×ÒØØ ØØ 7ð ñôðððóÚconfigcó‡—ddlŠ| d¦«r'|j t ¦«d¦«| d¦«r'|j t ¦«d¦«t j ‰j t j t j f¦«t j ‰_ |jt _ |t _ dˆfd„ }|  |¦«dS) Nrr0Úpdbtracer(Ú pdbinvokercó~•—tj ¦«\‰_t_t_dS©N)Ú pytestPDBÚ_savedÚpopÚ set_traceÚ_pluginmanagerÚ_config)Úpdbs€r#Úfinzpytest_configure..finUs3ø€õ Ô × Ò Ñ "Ô "ñ  Ø ŒMÝ Ô $Ý Ô Ð Ð r5©rN) rBÚgetvalueÚ pluginmanagerÚregisterÚPdbTraceÚ PdbInvoker<r=Úappendr?r@rAÚ add_cleanup)r6rCrBs @r#Úpytest_configurerLDsõø€Ø€J€J€Jà ‡‚�wÑÔð>ØÔ×%Ò%¥h¡j¤j°*Ñ=Ô=Ð=Ø ‡‚�xÑ Ô ð@ØÔ×%Ò%¥i¡k¤k°;Ñ?Ô?Ð?å Ô×ÒØ Œ� Ô0µ)Ô2CÐDñôðõÔ'€C„MØ%Ô3…IÔØ…IÔð#ð#ð#ð#ð#ð#ð ×Ò�sÑÔÐÐÐr5có˜—eZdZUdZdZeeed<dZee ed<gZ e e e deeee fed<dZdZee eeeefed<ed ed d eeeffd „¦«Zed ed fd „¦«Zed ed fd„¦«Zed„¦«Zedd„¦«ZdS)r<z'Pseudo PDB that defers to the real pdb.Nr@rA).Nr=rÚ_wrapped_pdb_clsÚcapmanrrcó2—|r| ¦«SdS)NF)Ú is_capturing)ÚclsrOs r#Ú _is_capturingzpytestPDB._is_capturingjs!€à ð )Ø×&Ò&Ñ(Ô(Ð (؈ur5có^—|js ddl}|jS|j d¦«}|jr|jd|kr |jdS|r¯|\}} t |¦«t j|}| d¦«}t||d¦«}|dd…D]} t|| ¦«}ŒnJ#t$r2} d  ||f¦«} td| ›d| ›�¦«| ‚d} ~ wwxYwddl}|j}|  ||¦«} || f|_| S)Nrr-éú.rz--pdbcls: could not import z: )rArBÚPdbrErNÚ __import__ÚsysÚmodulesrÚgetattrÚ ExceptionÚjoinrÚ_get_pdb_wrapper_class) rRrOrBr-r r!ÚmodÚpartsÚpdb_clsÚpartÚexcrÚ wrapped_clss r#Ú_import_pdb_clszpytestPDB._import_pdb_clspsy€àŒ{ð Ø ˆJˆJˆJð”7ˆNà”[×)Ò)¨,Ñ7Ô7ˆ à Ô ð + CÔ$8¸Ô$;¸zÒ$IÐ$IØÔ'¨Ô*Ð *à ð Ø!+Ñ ˆG�Yð ݘ7Ñ#Ô#Ð#Ý”k 'Ô*�ð"Ÿš¨Ñ,Ô,�Ý! # u¨Q¤xÑ0Ô0�Ø! ! " "œIð5ð5�DÝ% g¨tÑ4Ô4�G�Gð5øåð ð ð ØŸš '¨9Ð!5Ñ6Ô6�Ý ØB°%ÐBÐB¸SÐBÐBñôàðøøøøð øøøð ˆJˆJˆJà”gˆGà×0Ò0°¸&ÑAÔAˆ Ø *¨KÐ8ˆÔØÐsÁA)Cà DÃ-C;Ã;Dcó8‡‡‡—ddlŠGˆˆˆfd„d|¦«}|S)Nrcóh•‡—eZdZ”ZdZˆˆfd„Zˆˆˆfd„ZexZZˆˆfd„Z e Z e Z ˆfd„Z ˆfd„Z ˆxZS)ú:pytestPDB._get_pdb_wrapper_class..PytestPdbWrapperFcóŠ•—‰xjdz c_t¦« |¦«}‰xjdzc_|S)NrU)Ú_recursive_debugÚsuperÚdo_debug©ÚselfÚargÚretÚ __class__rRs €€r#rlzCpytestPDB._get_pdb_wrapper_class..PytestPdbWrapper.do_debug¡sGø€ØÐ$Ô$¨Ñ)Ð$Ô$Ý‘g”g×&Ò& sÑ+Ô+�ØÐ$Ô$¨Ñ)Ð$Ô$Ø� r5cóT•—t¦« |¦«}‰jdkrĉj€J‚‰j ‰j¦«}| ¦«|j}t  |¦«}|rO|dkr|  dd¦«n|  dd|z¦«|€J‚|  ¦«n|  dd¦«‰j €J‚‰j j  ‰j|¬¦«d|_|S) NrÚglobalú>z#PDB continue (IO-capturing resumed)z*PDB continue (IO-capturing resumed for %s)z PDB continue©r6rBT)rkÚ do_continuerjrAr6Úcreate_terminal_writerÚlineÚ_pytest_capmanr<rSÚsepÚresumer@ÚhookÚpytest_leave_pdbÚ _continued) rnrorpÚtwrOÚ capturingrqÚ_pytestrRs €€€r#rvzFpytestPDB._get_pdb_wrapper_class..PytestPdbWrapper.do_continue§s2ø€Ý‘g”g×)Ò)¨#Ñ.Ô.�ØÔ'¨1Ò,Ð,Øœ;Ð2Ð2Ð2Ø œ×>Ò>¸s¼{ÑKÔK�BØ—G’G‘I”I�Ià!Ô0�FÝ )× 7Ò 7¸Ñ ?Ô ?�IØ ð 4Ø$¨Ò0Ð0ØŸFšF 3Ð(MÑNÔNÐNÐNàŸFšFØ #Ø LØ"+ñ!,ñôðð &Ð1Ð1Ð1ØŸ š ™œ˜˜àŸš˜s NÑ3Ô3Ð3ØÔ)Ð5Ð5Ð5ØÔ"Ô'×8Ò8ÀÄ ÐQUÐ8ÑVÔVÐVØ"&�”Ø� r5c󈕗t¦« |¦«}‰jdkrtjd¦«|S)aRaise Exit outcome when quit command is used in pdb. This is a bit of a hack - it would be better if BdbQuit could be handled, but this would require to wrap the whole pytest run, and adjust the report etc. rúQuitting debugger)rkÚdo_quitrjr Úexitrms €€r#r„zBpytestPDB._get_pdb_wrapper_class..PytestPdbWrapper.do_quitÄs>ø€õ‘g”g—o’o cÑ*Ô*�àÔ'¨1Ò,Ð,Ý”MÐ"5Ñ6Ô6Ð6à� r5c󢕗t¦« ||¦«}|s)|jr"|jr|j d¬¦«|S)zŽSuspend on setup(). Needed after do_continue resumed, and entering another breakpoint again. T©Úin_)rkÚsetupr~ryÚsuspend_global_capture)rnÚfÚtbrprqs €r#r‰z@pytestPDB._get_pdb_wrapper_class..PytestPdbWrapper.setupÕs\ø€õ ‘g”g—m’m A rÑ*Ô*�ØðM˜tœðMðÔ*ðMØÔ+×BÒBÀtÐBÑLÔLÐLØ� r5cóH•—t¦« ||¦«\}}|€wtdt|¦«dz ¦«}|rU||dj dd¦«r.|dz}|r'||dj dd¦«°.||fS)NrrUÚ__tracebackhide__F)rkÚ get_stackÚmaxÚlenÚf_localsÚget)rnr‹ÚtÚstackÚirqs €r#r�zDpytestPDB._get_pdb_wrapper_class..PytestPdbWrapper.get_stackãs¨ø€Ý ™7œ7×,Ò,¨Q°Ñ2Ô2‘��qØ�9å˜A�s 5™zœz¨A™~Ñ.Ô.�AØð  a¤¨¤ Ô 4× 8Ò 8Ð9LÈeÑ TÔ TðؘQ™˜ðð  a¤¨¤ Ô 4× 8Ò 8Ð9LÈeÑ TÔ Tðà˜a�x�r5)Ú__name__Ú __module__Ú __qualname__ryr~rlrvÚdo_cÚdo_contr„Údo_qÚdo_exitr‰r�Ú __classcell__)rqr�rOrRs@€€€r#ÚPytestPdbWrapperrh�sÓøø€€€€€Ø#ˆN؈Jð ð ð ð ð ð ð  ð ð ð ð ð ð ð6)Ð (ˆD�7ð ð ð ð ð ð ðˆD؈Gð ð ð ð ð ð ð ð ð ð ð ð ð ð r5rŸ)Ú_pytest.config)rRrarOrŸr�s` ` @r#r^z pytestPDB._get_pdb_wrapper_class—sdøøø€àÐÐÐðM ðM ðM ðM ðM ðM ðM ðM ðM ˜wñM ôM ðM ð^ Ðr5cóÜ—ddl}|j€d}n|j d¦«}|r| d¬¦«|jrÜ|j |j¦«}| ¦«|jdkrž|  dd¦«}|�|  d|¦«no|  |¦«}|dkr|  dd |›d �¦«n9|r|  dd |›d |›d �¦«n|  dd |›�¦«|  |¦«di|¤Ž} |jr&|jj  |j| ¬ ¦«| S)z4Initialize PDB debugging, dropping any IO capturing.rNÚcapturemanagerTr‡ÚheaderrtrszPDB z (IO-capturing turned off)z (IO-capturing turned off for ú)ru©)r r@Ú getpluginÚsuspendrAr6rwrxrjr>rzrSrer|Úpytest_enter_pdb) rRÚmethodÚargsÚkwargsr�rOrr£r€Ú_pdbs r#Ú _init_pdbzpytestPDB._init_pdbîs«€ð ÐÐÐà Ô Ð %Ø/3ˆFˆFàÔ'×1Ò1Ð2BÑCÔCˆFØ ð %Ø �NŠN˜tˆNÑ $Ô $Ð $à Œ;ð 5Ø”×6Ò6°s´{ÑCÔCˆBØ �GŠG‰IŒIˆIàÔ# qÒ(Ð(àŸš H¨dÑ3Ô3�ØÐ%Ø—F’F˜3 Ñ'Ô'Ð'Ð'à #× 1Ò 1°&Ñ 9Ô 9�IØ  HÒ,Ð,ØŸš˜sÐ$M¨6Ð$MÐ$MÐ$MÑNÔNÐNÐNØ"ð5ØŸšØ˜Cà%˜v˜v y y yð2ñôððð Ÿš˜s O¨6 O OÑ4Ô4Ð4à*ˆs×"Ò" 6Ñ*Ô*Ð4Ð4¨VÐ4Ð4ˆà Ô ð SØ Ô Ô #× 4Ò 4¸C¼KÈTÐ 4Ñ RÔ RÐ R؈ r5có‚—tj¦«j}|jdg|¢Ri|¤Ž}| |¦«dS)zBInvoke debugging via ``Pdb.set_trace``, dropping any IO capturing.r?N)rYÚ _getframeÚf_backr­r?)rRrªr«Úframer¬s r#r?zpytestPDB.set_tracesK€õ” ‘”Ô&ˆØˆsŒ}˜[Ð:¨4Ð:Ð:Ð:°6Ð:Ð:ˆØ �Š�uÑÔÐÐÐr5rD)r—r˜r™Ú__doc__r@rrÚ__annotations__rArr=rrrrjrNr rÚ classmethodr ÚstrÚboolrSrer^r­r?r¥r5r#r<r<_sŽ€€€€€€Ø1Ð1à48€N�HÐ0Ô1Ð8Ð8Ñ8Ø $€GˆX�fÔ Ð$Ð$Ñ$ð ð ˆDØ ˆh�yÔ! 8Ð,?Ô#@À(È6ÔBRÐRÔSô ð ð ñ ðÐØ>BÐ�h˜u T¨#¤Y°°S´ Ð%9Ô:Ô;ÐBÐBÑBàð 8Ð,<Ô#=ðÀ%ÈÈTÈ ÔBRðððñ„[ðð ð$ XÐ.>Ô%?ð$ð$ð$ñ„[ð$ðLðT °XÐ>NÔ5OðT ðT ðT ñ„[ðT ðlð%ð%ñ„[ð%ðNðððñ„[ðððr5r<cóB—eZdZdedddeddfd„Zdeeddfd „ZdS) rIÚnodeÚcallz CallInfo[Any]ÚreportrNcó¨—|jj d¦«}|rk| d¬¦«| ¦«\}}t j |¦«t j |¦«|j€J‚t|jj tj ¦«st||j|¦«dSdS)Nr¢Tr‡)r6rFr¦rŠÚread_global_capturerYÚstdoutÚwriteÚexcinfoÚ isinstancerÚunittestÚSkipTestÚ _enter_pdb)rnr¸r¹rºrOÚoutÚerrs r#Úpytest_exception_interactz#PdbInvoke.pytest_exception_interactsÉ€ð”Ô*×4Ò4Ð5EÑFÔFˆØ ð "Ø × )Ò )¨dÐ )Ñ 3Ô 3Ð 3Ø×1Ò1Ñ3Ô3‰HˆC�Ý ŒJ× Ò ˜SÑ !Ô !Ð !Ý ŒJ× Ò ˜SÑ !Ô !Ð !ØŒ|Ð'Ð'Ð'å˜$œ,Ô,­hÔ.?Ñ@Ô@ð 3Ý �t˜Tœ\¨6Ñ 2Ô 2Ð 2Ð 2Ð 2ð 3ð 3r5r¿cóB—t|¦«}t|¦«dSr;)Ú_postmortem_tracebackÚ post_mortem)rnr¿rŒs r#Úpytest_internalerrorzPdbInvoke.pytest_internalerror-s€Ý " 7Ñ +Ô +ˆÝ�B‰Œˆˆˆr5) r—r˜r™rrrÆr Ú BaseExceptionrÊr¥r5r#rIrIso€€€€€ð 3Øð 3Ø /ð 3Ø9Cð 3à ð 3ð 3ð 3ð 3ð¨M¸-Ô,HðÈTððððððr5rIcóJ—eZdZed¬¦«dedfd„¦«ZdS)rHT)Ú hookwrapperr)NNNc#ó0K—t|¦«dV—dSr;)Ú wrap_pytest_function_for_tracing)rnÚ pyfuncitems r#Úpytest_pyfunc_callzPdbTrace.pytest_pyfunc_call3s!èè€å(¨Ñ4Ô4Ð4Ø ˆˆˆˆˆr5N)r—r˜r™rrrÑr¥r5r#rHrH2sM€€€€€Ø €X˜$ÐÑÔð° Ð:JÔ0Kðððñ Ôðððr5rHc󚇇—t d¦«Š|jŠtj‰¦«ˆˆfd„¦«}||_dS)zñChange the Python function object of the given Function item by a wrapper which actually enters pdb before calling the python function itself, effectively leaving the user in the pdb prompt in the first statement of the function.Úruncallcó\•—tj‰g|¢Ri|¤Ž}‰ |¦«dSr;)Ú functoolsÚpartialrÓ)rªr«Úfuncr¬Ú testfunctions €€r#Úwrapperz1wrap_pytest_function_for_tracing..wrapperDs;ø€åÔ  Ð?°Ð?Ð?Ð?¸Ð?Ð?ˆØ � Š �TÑÔÐÐÐr5N)r<r­ÚobjrÕÚwraps)rÐrÙr¬rØs @@r#rÏrÏ9sbøø€õ × Ò ˜yÑ )Ô )€DØ”>€Lõ „_�\Ñ"Ô"ðððððñ#Ô"ðð€J„N€N€Nr5có\—|j d¦«rt|¦«dSdS)zaWrap the given pytestfunct item for tracing support if --trace was given in the command line.r0N)r6rErÏ)rÐs r#Ú&maybe_wrap_pytest_function_for_tracingrÝLs;€ðÔ×!Ò! 'Ñ*Ô*ð5Ý(¨Ñ4Ô4Ð4Ð4Ð4ð5ð5r5r¸r¿Úrepcó@—|jj d¦«j}| ¦«|jjj}d|jfd|jfd|j ffD]S\}}||dfvrH|rF|  dd|z¦«|dd…d kr |dd…}| |¦«ŒT|  dd ¦«|  |¦«|  dd ¦«t|¦«}d |_ t|¦«|S) NÚterminalreporterr½ÚstderrÚlogÚallrtz captured éÿÿÿÿú Ú tracebackz entering PDBT)r6rFr¦Ú_twrxÚoptionÚ showcaptureÚ capstdoutÚ capstderrÚcaplogrzÚ toterminalrÈÚ _pdbshownrÉ)r¸r¿rÞrréÚ sectionnameÚcontentrŒs r#rÃrÃSs1€ð ŒÔ "× ,Ò ,Ð-?Ñ @Ô @Ô D€B؇G‚G�I„I€Ià”+Ô$Ô0€Kð �3”=Ð!Ø �3”=Ð!Ø �” Ðð!ð ð ш �Wð ˜;¨Ð.Ð .Ð .°7Ð .Ø �FŠF�3˜  kÑ1Ñ 2Ô 2Ð 2Ø�r�s�sŒ|˜tÒ#Ð#Ø! # 2 #œ,�Ø �GŠG�GÑ Ô Ð øà‡F‚Fˆ3� ÑÔÐØ‡N‚N�2ÑÔÐØ‡F‚Fˆ3�ÑÔÐÝ ˜wÑ 'Ô '€BØ€C„MÝ��O„O€OØ €Jr5cóà—ddlm}t|j|¦«r|jjdSt|jt ¦«r|jjdS|j€J‚|jdS)Nr)ÚUnexpectedExceptioné)ÚdoctestròrÀrÚexc_inforr¿Ú_excinfo)r¿ròs r#rÈrÈrs€Ø+Ð+Ð+Ð+Ð+Ð+å�'”-Ð!4Ñ5Ô5ð #ðŒ}Ô% aÔ(Ð(Ý �G”MÕ#8Ñ 9Ô 9ð#ðŒ}Ô$ QÔ'Ð'àÔÐ+Ð+Ð+ØÔ Ô"Ð"r5r”cóÈ—t d¦«}| ¦«| d|¦«|jrt jd¦«dSdS)NrÉrƒ)r<r­ÚresetÚ interactionÚquittingr r…)r”Úps r#rÉrÉ‚sa€Ý×Ò˜MÑ*Ô*€A؇G‚G�I„I€I؇M‚M�$˜ÑÔÐØ„zð+ÝŒ Ð)Ñ*Ô*Ð*Ð*Ð*ð+ð+r5)3r²rrÕrYÚtypesrÁÚtypingrrrrrrr r r r�r Ú _pytest._coder r rrrrÚ_pytest.config.argparsingrÚ_pytest.config.exceptionsrÚ _pytest.nodesrÚ_pytest.reportsrÚ_pytest.capturerÚ_pytest.runnerrrµr$r4rLr<rIrHrÏrÝrËrÃÚ TracebackTyperÈrÉr¥r5r#úrs\ðØ:Ð:Ø€€€ØÐÐÐØ € € € Ø € € € Ø€€€ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð ØÐÐÐÐÐàÐÐÐÐÐØ'Ð'Ð'Ð'Ð'Ð'Ø!Ð!Ð!Ð!Ð!Ð!Ø0Ð0Ð0Ð0Ð0Ð0Ø#Ð#Ð#Ð#Ð#Ð#Ø.Ð.Ð.Ð.Ð.Ð.Ø,Ð,Ð,Ð,Ð,Ð,Ø0Ð0Ð0Ð0Ð0Ð0ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&àð(Ø.Ð.Ð.Ð.Ð.Ð.Ø'Ð'Ð'Ð'Ð'Ð'ð  ð ¨¨c°3¨h¬ð ð ð ð ð˜Vð¨ððððð0˜Vð¨ððððð6|ð|ð|ð|ð|ñ|ô|ð|ð~ððððñôðð(ððððñôððððð&5ð5ð5ðØ ðØ& }Ô5ðØ # =°Ô#?ð #ÀEÔDWð #ð #ð #ð #ð +�5Ô&ð+¨4ð+ð+ð+ð+ð+ð+r5