+
    yj3                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIt^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  R R lt!R R lt"R R lt# ! R R4      t$ ! R R4      t% ! R R4      t&R R lt'R  R! lt(R" R# lt)R$ R% lt*R& R' lt+R# )(z4Interactive debugging with PDB, the Python Debugger.)annotationsN)Any)Callable)	Generator)outcomes)ExceptionInfo)CaptureManager)Config)ConftestImportFailure)hookimpl)PytestPluginManager)Parser)
UsageError)Node)
BaseReport)CallInfoc                    V ^8  d   QhRRRR/# )   valuestrreturnztuple[str, str] )formats   "E/var/www/html/2rare/lib/python3.14/site-packages/_pytest/debugging.py__annotate__r      s                c                     V P                  R4      w  rW3#   \         d!   p\        P                  ! T : R24      ThRp?ii ; i)z#Validate syntax of --pdbcls option.:z) is not in the format 'modname:classname'N)split
ValueErrorargparseArgumentTypeError)r   modname	classnamees   &   r   _validate_usepdb_clsr%      sV    "[[-
 	  ((i@A
	s    A>Ac                    V ^8  d   QhRRRR/# )r   parserr   r   Noner   )r   s   "r   r   r   )   s      V  r   c                    V P                  R 4      pVP                  RRRRR7       VP                  RRR\        R	R
7       VP                  RRRRR7       R# )generalz--pdbusepdb
store_truezDStart the interactive Python debugger on errors or KeyboardInterrupt)destactionhelpz--pdbcls
usepdb_clszmodulename: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 testN)getgroup
_addoptionr%   )r'   groups   & r   pytest_addoptionr7   )   sw    OOI&E	S	   
&!F   
7	  r   c                    V ^8  d   QhRRRR/# )r   configr	   r   r(   r   )r   s   "r   r   r   A   s      V  r   c                *  a ^ RI oV P                  R4      '       d%   V P                  P                  \	        4       R4       V P                  R4      '       d%   V P                  P                  \        4       R4       \        P                  P                  SP                  \        P                  \        P                  34       \        P                  Sn	        V P                  \        n
        V \        n        R V3R llpV P                  V4       R# )    Nr3   pdbtracer+   	pdbinvokec                   V ^8  d   QhRR/# r   r   r(   r   )r   s   "r   r   &pytest_configure.<locals>.__annotate__R   s     # # #r   c                 z   < \         P                  P                  4       w  S n        \         n        \         n        R # N)	pytestPDB_savedpop	set_trace_pluginmanager_config)pdbs   r   finpytest_configure.<locals>.finR   s-    
   "		
M$r   )rI   getvaluepluginmanagerregisterPdbTrace	PdbInvokerC   rD   appendrF   rG   rH   add_cleanup)r9   rJ   rI   s   & @r   pytest_configurerS   A   s    w%%hj*=x  %%ik;?		00)2C2CD ''CM%33II# # sr   c                      ] tR t^\t$ RtRtR]R&   RtR]R&   . tR]R&   ^ t	Rt
R	]R
&   ]R R l4       t]R R l4       t]R R l4       t]R 4       t]R R l4       tRtR# )rC   z'Pseudo PDB that defers to the real pdb.NzPytestPluginManager | NonerG   zConfig | NonerH   zKlist[tuple[Callable[..., None], PytestPluginManager | None, Config | None]]rD   z"tuple[type[Any], type[Any]] | None_wrapped_pdb_clsc                    V ^8  d   QhRRRR/# )r   capmanCaptureManager | Noner   z
str | boolr   )r   s   "r   r   pytestPDB.__annotate__h   s      #8 Z r   c                	6    V'       d   VP                  4       # R # )F)is_capturing)clsrW   s   &&r   _is_capturingpytestPDB._is_capturingg   s    &&((r   c                   V ^8  d   QhRR/# r   rW   rX   r   )r   s   "r   r   rY   n   s     $ $%: $r   c                	   V P                   '       g   ^ RIpVP                  # V P                   P                  R4      pV P                  '       d,   V P                  ^ ,          V8X  d   V P                  ^,          # V'       dg   Vw  rE \        V4       \        P                  V,          pVP                  R4      p\        Wg^ ,          4      pVR,           F  p	\        W4      pK  	  M^ RIpVP                  pV P                  W4      pW<3V n        V#   \         d+   p
RP                  YE34      p\        RT: RT
 24      T
hRp
?
ii ; i)r;   Nr0   .:   NNr   z--pdbcls: could not import z: )rH   rI   PdbrL   rU   
__import__sysmodulesr   getattr	Exceptionjoinr   _get_pdb_wrapper_class)r\   rW   rI   r0   r"   r#   modpartspdb_clspartexcr   wrapped_clss   &&           r   _import_pdb_clspytestPDB._import_pdb_clsm   s,   {{{ 77N[[)),7
C$8$8$;z$I''**!+G7#kk'* ",!#Qx0!"IID%g4G & ggG00A *8  '!56 1%"SEBs   A D E	%EE	c                   V ^8  d   QhRR/# r`   r   )r   s   "r   r   rY      s     Q  Q 5J Q r   c                	4   a aa ^ RI o ! VVV 3R lRV4      pV# )r;   Nc                  |   <a  ] tR t^t ZtRtV V3R ltV VV3R lt];tt	V V3R lt
]
t]
tV 3R ltV 3R ltRtV ;t# ):pytestPDB._get_pdb_wrapper_class.<locals>.PytestPdbWrapperFc                	   < S;P                   ^,          un         \        SV `	  V4      pS;P                   ^,          un         V# )rc   )_recursive_debugsuperdo_debugselfargret	__class__r\   s   && r   r{   CpytestPDB._get_pdb_wrapper_class.<locals>.PytestPdbWrapper.do_debug   s9    $$)$g&s+$$)$
r   c                	f  < \         SV `  V4      pSP                  ^ 8X  d   SP                  f   Q hSP                  P                  SP                  4      pVP                  4        V P                  p\        P                  V4      pV'       dH   VR8X  d   VP                  RR4       MVP                  RRV R24       Vf   Q hVP                  4        MVP                  RR4       SP                  f   Q hSP                  P                  P                  SP                  V R7       RV n        V# )	r;   global>z#PDB continue (IO-capturing resumed)z'PDB continue (IO-capturing resumed for )zPDB continuer9   rI   T)rz   do_continuery   rH   r9   create_terminal_writerline_pytest_capmanrC   r]   sepresumerG   hookpytest_leave_pdb
_continued)	r}   r~   r   twrW   	capturingr   _pytestr\   s	   &&    r   r   FpytestPDB._get_pdb_wrapper_class.<locals>.PytestPdbWrapper.do_continue   s	   g)#.''1,;;222 >>s{{KBGGI!00F ) 7 7 ?I $0FF3(MNFF #"I)TU V  &111sN3))555""''88QU8V"&
r   c                t   < \         SV `  V4      pSP                  ^ 8X  d   \        P                  ! R4       V# )zRaise 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.
Quitting debugger)rz   do_quitry   r   exitr|   s   && r   r   BpytestPDB._get_pdb_wrapper_class.<locals>.PytestPdbWrapper.do_quit   s3     goc*''1,MM"56
r   c                   < \         SV `  W4      pV'       gA   V P                  '       d/   V P                  '       d   V P                  P	                  RR7       V# )z^Suspend on setup().

Needed after do_continue resumed, and entering another
breakpoint again.
Tin_)rz   setupr   r   suspend_global_capture)r}   ftbr   r   s   &&& r   r   @pytestPDB._get_pdb_wrapper_class.<locals>.PytestPdbWrapper.setup   sH     gmA*t ***++BBtBL
r   c                	   < \         SV `  W4      w  r4Vf_   \        ^ \        V4      ^,
          4      pV'       d;   W4,          ^ ,          P                  P                  RR4      '       d   V^,          pKB  W43# )N__tracebackhide__F)rz   	get_stackmaxlenf_localsget)r}   r   tstackir   s   &&&  r   r   DpytestPDB._get_pdb_wrapper_class.<locals>.PytestPdbWrapper.get_stack   s_     7,Q29As5zA~.A 4 4 8 89Le T TQxr   )r   )__name__
__module____qualname____firstlineno__r   r   r{   r   do_cdo_contr   do_qdo_exitr   r   __static_attributes____classcell__)r   r   rW   r\   s   @r   PytestPdbWrapperrw      sC    #NJ4 )(D7 DG   r   r   )_pytest.config)r\   rn   rW   r   r   s   f&f @r   rk    pytestPDB._get_pdb_wrapper_class   s#    L	  L	 w L	 \  r   c                   ^ RI pV P                  f   RpMV P                  P                  R4      pV'       d   VP                  RR7       V P                  '       d   VP
                  P                  V P                  4      pVP                  4        V P                  ^ 8X  d   VP                  RR4      pVe   VP                  RV4       MfV P                  V4      pVR8X  d   VP                  RRV R	24       M7V'       d   VP                  RRV R
V R24       MVP                  RRV 24       V P                  V4      ! R/ VB p	V P                  '       d2   V P                  P                  P                  V P                  V	R7       V	# )z4Initialize PDB debugging, dropping any IO capturing.NcapturemanagerTr   headerr   r   zPDB z (IO-capturing turned off)z (IO-capturing turned off for r   r   r   )r   rG   	getpluginsuspendrH   r9   r   r   ry   rE   r   r]   rr   r   pytest_enter_pdb)
r\   methodargskwargsr   rW   r   r   r   _pdbs
   &&*,      r   	_init_pdbpytestPDB._init_pdb   sT    	%,0F''112BCFNNtN$;;;66s{{CBGGI##q(Hd3%FF3' # 1 1& 9I H,sd6(2L$MN""6(*HSTU
 sd6(O4""6*4V4##44CKKT4Rr   c                   V ^8  d   QhRR/# r?   r   )r   s   "r   r   rY     s      4 r   c                    \         P                  ! 4       P                  pV P                  ! R.VO5/ VB pVP	                  V4       R# )zBInvoke debugging via ``Pdb.set_trace``, dropping any IO capturing.rF   N)rf   	_getframef_backr   rF   )r\   r   r   framer   s   &*,  r   rF   pytestPDB.set_trace  s9     &&}}[:4:6:ur   r   )r   r   r   r   __doc__rG   __annotations__rH   rD   ry   rU   classmethodr]   rr   rk   r   rF   r   r   r   r   rC   rC   \   s    115N.5!G]! 	    ;?8? 
 $ $L Q  Q f $ $L  r   rC   c                  .    ] tR tRtR R ltR R ltRtR# )rP   i  c               (    V ^8  d   QhRRRRRRRR/# )	r   noder   callzCallInfo[Any]reportr   r   r(   r   )r   s   "r   r   PdbInvoke.__annotate__  s,     3 33 -37A3	3r   c                	   VP                   P                  P                  R 4      pV'       dc   VP                  RR7       VP	                  4       w  rV\
        P                  P                  V4       \
        P                  P                  V4       VP                  f   Q h\        VP                  P                  \        P                  4      '       g   \        WP                  V4       R# R# )r   Tr   N)r9   rM   r   r   read_global_capturerf   stdoutwriteexcinfo
isinstancer   unittestSkipTest
_enter_pdb)r}   r   r   r   rW   outerrs   &&&&   r   pytest_exception_interact#PdbInvoke.pytest_exception_interact  s     **445EF))d)3113HCJJS!JJS!||'''$,,,,h.?.?@@t\\62 Ar   c                    V ^8  d   QhRRRR/# )r   r   ExceptionInfo[BaseException]r   r(   r   )r   s   "r   r   r   &  s      ,H T r   c                	2    \        V4      p\        V4       R # rB   )_postmortem_tracebackpost_mortem)r}   r   r   s   && r   pytest_internalerrorPdbInvoke.pytest_internalerror&  s    "7+Br   r   N)r   r   r   r   r   r   r   r   r   r   rP   rP     s    3 r   rP   c                  :    ] tR tRt]! RR7      R R l4       tRtR# )rO   i+  T)wrapperc                   V ^8  d   QhRR/# )r   r   zGenerator[None, object, object]r   )r   s   "r   r   PdbTrace.__annotate__-  s      0O r   c              #  	(   "   \        V4       R x # 5irB   ) wrap_pytest_function_for_tracing)r}   
pyfuncitems   &&r   pytest_pyfunc_callPdbTrace.pytest_pyfunc_call,  s     (4s   r   N)r   r   r   r   r   r   r   r   r   r   rO   rO   +  s    d r   rO   c                   V ^8  d   QhRR/# r?   r   )r   s   "r   r   r   2  s      D r   c                   aa \         P                  R4      oV P                  o\        P                  ! S4      R VV3R ll4       pWn        R# )zChange 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                   V ^8  d   QhRR/# r?   r   )r   s   "r   r   6wrap_pytest_function_for_tracing.<locals>.__annotate__>  s      D r   c                 ^   < \         P                  ! S.V O5/ VB pSP                  V4       R # rB   )	functoolspartialr   )r   r   funcr   testfunctions   *, r   r   1wrap_pytest_function_for_tracing.<locals>.wrapper=  s)      ???Tr   N)rC   r   objr   wraps)r   r   r   r   s   & @@r   r   r   2  sG    
 y)D>>L
 __\"  # Nr   c                   V ^8  d   QhRR/# r?   r   )r   s   "r   r   r   E  s     5 5$ 5r   c                b    V P                   P                  R4      '       d   \        V 4       R# R# )z]Wrap the given pytestfunct item for tracing support if --trace was given in
the command line.r3   N)r9   rL   r   )r   s   &r   &maybe_wrap_pytest_function_for_tracingr   E  s(     !!'**(4 +r   c               (    V ^8  d   QhRRRRRRRR/# )r   r   r   r   r   repr   r   r   )r   s   "r   r   r   L  s,      
5<Fr   c                f   V P                   P                  P                  R 4      P                  pVP	                  4        V P                   P
                  P                  pRVP                  3RVP                  3RVP                  33 FR  w  rVWER39   g   K  V'       g   K  VP                  RRV,           4       VRR R8X  d   VRR pVP	                  V4       KT  	  VP                  RR	4       VP                  V4       VP                  RR
4       \        V4      pRVn        \        V4       V# )terminalreporterr   stderrlogallr   z	captured N
	tracebackzentering PDBT)r9   rM   r   _twr   optionshowcapture	capstdout	capstderrcaplogr   
toterminalr   	_pdbshownr   )r   r   r  r   r  sectionnamecontentr   s   &&&     r   r   r   L  s    
	"	"	,	,-?	@	D	DBGGI++$$00K 
3==!	3==!	

!
 ..77FF3k12rs|t#!#2,GGG! FF3NN2FF3	w	'BCMOJr   c                    V ^8  d   QhRRRR/# )r   r   r   r   types.TracebackTyper   )r   s   "r   r   r   k  s     # ##? #DW #r   c                   ^ RI Hp \        V P                  V4      '       d   V P                  P                  ^,          # \        V P                  \
        4      '       dE   V P                  P                  P                  f   Q hV P                  P                  P                  # V P                  f   Q hV P                  ^,          # )r;   )UnexpectedException)	doctestr  r   r   exc_infor
   cause__traceback___excinfo)r   r  s   & r   r   r   k  s    +'--!455 }}%%a((	GMM#8	9	9 }}""00<<<}}""000+++""r   c                    V ^8  d   QhRRRR/# )r   r   r  r   r(   r   )r   s   "r   r   r   |  s     + +& +4 +r   c                    \         P                  R 4      pVP                  4        VP                  RV 4       VP                  '       d   \
        P                  ! R4       R# R# )r   Nr   )rC   r   resetinteractionquittingr   r   )r   ps   & r   r   r   |  sD    M*AGGIMM$zzz)* r   ),r   
__future__r   r    r   rf   typestypingr   r   r   r   r   r   _pytest._coder   _pytest.capturer   r   r	   r
   r   r   _pytest.config.argparsingr   _pytest.config.exceptionsr   _pytest.nodesr   _pytest.reportsr   _pytest.runnerr   r%   r7   rS   rC   rP   rO   r   r   r   r   r   r   r   r   <module>r.     s    ; "   
       ' * ! 0 # . , 0  & # 06x xv ( &5>#"+r   