
    	hH              
          d 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 ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl"m$Z$ ddl"m%Z% ddl&m'Z' ddl&m(Z( ddl&m)Z) dd l&m*Z* ej+        dd!         d"k     rdd#l,m-Z- erdd$l.m/Z/ dd%l0m1Z1 dd&l2m3Z3 d'ed(dfd)Z4dPd,Z5dQd/Z6dQd0Z7d1e$d2ee$         d(e8fd3Z9	 dRd1e$d5e8d2ee$         d(e
e         fd6Z:d1e$d(dfd7Z;d1e$d(dfd8Z<d1e$d(dfd9Z=d1e$d2ee$         d(dfd:Z>d1e$d;ed<         d(dfd=Z?d>ed(eee@e@e@f                  fd?ZA	 dSd1e$d;d<d5e8d(efd@ZBdAdBd>ed(e8fdCZCd1e$d;d<d(dDfdEZD edFd4G          ZEeejF         G dH dIe	eE                                           ZGd1e$dAeGd         d(efdJZHdKe#d(efdLZI G dM dN          ZJdKe#d(efdOZKdS )Tz3Basic collect and runtest protocol implementations.    N)Callable)cast)Dict)Generic)List)Optional)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )
BaseReport)CollectErrorRepr)CollectReport)
TestReport)timing)ExceptionChainRepr)ExceptionInfo)TerminalRepr)final)Parser)check_ispytest)	Collector)Item)Node)Exit)OutcomeException)Skipped)TEST_OUTCOME   )      )BaseExceptionGroup)Literal)Session)TerminalReporterparserreturnc                     |                      ddd          }|                    ddt          d dd	           |                    d
dt          ddd	           d S )Nzterminal reporting	Reportinggeneral)afterz--durationsstoreNz1Show N slowest setup/test durations (N=0 for all))actiontypedefaultmetavarhelpz--durations-ming{Gzt?zJMinimal duration in seconds for inclusion in slowest list. Default: 0.005.)getgroup	addoptionintfloat)r(   groups     [/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/_pytest/runner.pypytest_addoptionr;   2   s    OO0+YOOOE	OO@     
OO          terminalreporterr'   c                    | j         j        j        }| j         j        j        }| j                             d          }|d S | }g }|j                                        D ],}|D ]'}t          |d          r|                    |           (-|sd S |	                    d d           |s|
                    dd           n#|
                    dd|z             |d |         }t          |          D ]\  }}|d	k     rM|j        |k     rB|                    d
           |                    dt          |          |z
  |fz              d S |                    |j        dd|j        dd|j                    d S )Nverbosedurationc                     | j         S N)r@   )xs    r:   <lambda>z)pytest_terminal_summary.<locals>.<lambda>U   s    QZ r<   T)keyreverse=zslowest durationszslowest %s durationsr!    z>(%s durations < %gs hidden.  Use -vv to show these durations.)z02.2fzs z<8 )configoption	durationsdurations_mingetvaluestatsvalueshasattrappendsort	write_sep	enumerater@   
write_linelenwhennodeid)	r=   rL   rM   r?   trdlistreplistrepis	            r:   pytest_terminal_summaryr_   G   s    '.8I$+2@M%..y99G	BE8??$$ " " 	" 	"CsJ'' "S!!!	"  	JJ''J666 "
S-....
S09<===jyj!E"" K K3Q;;3<-77MM"MMPu::>=12   EE
IIIsxIIISZIIJJJJK Kr<   sessionr&   c                 ,    t                      | _        d S rB   )
SetupState_setupstater`   s    r:   pytest_sessionstartre   g   s    $,,Gr<   c                 :    | j                             d            d S rB   )rc   teardown_exactrd   s    r:   pytest_sessionfinishrh   k   s    &&t,,,,,r<   itemnextitemc                     | j         }|                    | j        | j                   t	          | |           |                    | j        | j                   dS )N)rY   locationrj   T)ihookpytest_runtest_logstartrY   rl   runtestprotocolpytest_runtest_logfinish)ri   rj   rn   s      r:   pytest_runtest_protocolrr   o   s[    JE	!!t}!MMMD8,,,,	""$+"NNN4r<   Tlogc                    t          | d          }|r| j        s|                                  t          | d|          }|g}|j        ri| j                            dd          rt          |            | j                            dd          s$|                    t          | d|                     |                    t          | d||                     |rd| _        d | _	        |S )	N_requestsetup	setupshowF	setuponlycallteardownrm   )
rQ   ru   _initrequestcall_and_reportpassedrJ   	getoptionshow_test_itemrR   funcargs)ri   rs   rj   
hasrequestr]   reportss         r:   rp   rp   w   s     z**J $-  	
$
-
-CeG
z ?;  e44 	!4   {$$[%88 	?NN?4==>>>NN?4S8LLLMMM  Nr<   c                    | j                                         }|                                 |                    d           |                    | j                   t          t          | dg                     }|r;|                    d                    d                    |                               |	                                 dS )zAShow test function, parameters and the fixtures of the test item.z        fixturenamesz (fixtures used: {})z, N)
rJ   get_terminal_writerlinewriterY   sortedgetattrformatjoinflush)ri   twused_fixturess      r:   r   r      s    		(	(	*	*BGGIIIHHWHHT[74<<==M J
'..tyy/G/GHHIIIHHJJJJJr<   c                 d    t          | d           | j        j                            |            d S )Nrv   )_update_current_test_varr`   rc   rv   )ri   s    r:   pytest_runtest_setupr      s1    T7+++L""4(((((r<   c                 N   t          | d           	 t          `t          `t          `n# t
          $ r Y nw xY w	 |                                  d S # t          $ rK}t          |          t          _        |t          _        |j	        J |j	        j
        t          _        |d }~ww xY w)Nry   )r   sys	last_type
last_valuelast_tracebackAttributeErrorruntest	Exceptionr1   __traceback__tb_next)ri   es     r:   pytest_runtest_callr      s    T6***MN   	   Q***_4s$   ( 
55A 
B$ABB$c                     t          | d           | j        j                            |           t          | d            d S )Nrz   )r   r`   rc   rg   )ri   rj   s     r:   pytest_runtest_teardownr      sA    T:...L++H555T4(((((r<   rX   z$Literal['setup', 'call', 'teardown']c                     d}|r4| j          d| d}|                    dd          }|t          j        |<   dS t          j                            |           dS )zUpdate :envvar:`PYTEST_CURRENT_TEST` to reflect the current item and stage.

    If ``when`` is None, delete ``PYTEST_CURRENT_TEST`` from the environment.
    PYTEST_CURRENT_TESTz () z(null)N)rY   replaceosenvironpop)ri   rX   var_namevalues       r:   r   r      sh     %H !;))$)))fh//$
8

x     r<   reportc                 @    | j         dv r| j        rdS | j        rdS dS d S )N)rv   rz   )errorEERROR)skippedsSKIPPED)rH   rH   rH   )rX   failedr   r   s    r:   pytest_report_teststatusr      s:    {+++= 	((^ 	,,:4r<   c                     t          | |fi |}| j        }|                    | |          }|r|                    |           t	          ||          r|                    | ||           |S )Nri   ry   r   nodery   r   )call_runtest_hookrn   pytest_runtest_makereportpytest_runtest_logreportcheck_interactive_exceptionpytest_exception_interact)ri   rX   rs   kwdsry   hookr   s          r:   r|   r|      s     T400400D:D77T7MMF
 5%%V%444"400 L&&DtF&KKKMr<   ry   zCallInfo[object]c                     | j         dS t          |d          rdS t          | j         j        t          t
          j        f          rdS dS )zVCheck whether the call raised an exception that should be reported as
    interactive.NFwasxfailT)excinforQ   
isinstancer   r   bdbBdbQuit)ry   r   s     r:   r   r      sP     |uvz"" u$,$w&<== u4r<   zCallInfo[None]c                 4    |dk    r j         j        n3|dk    r j         j        n |dk    r j         j        nJ d|             t          f} j                            dd          s|t          fz  }t          	                     fd||          S )	Nrv   ry   rz   FzUnhandled runtest hook case: usepdbc                        ddiS )Nri    r   )rn   ri   r   s   r:   rD   z#call_runtest_hook.<locals>.<lambda>  s    ((4(4(( r<   )rX   reraise)
rn   r   r   r   r   rJ   r~   KeyboardInterruptCallInfo	from_call)ri   rX   r   r   rn   s   ` ` @r:   r   r      s     w%)Z%D	
.			
2<<d<<<<u04wG;  511 (%''((((((tW    r<   TResult)	covariantc                   ^   e Zd ZU dZee         ed<   eee                  ed<   e	ed<   e	ed<   e	ed<   ded<   d	d
dee         deee                  de	de	de	ddde
ddfdZedefd            Ze	 ddddddeeee         eee         df         f                  ddfd            ZdefdZdS )r   z/Result/Exception info of a function invocation._resultr   startstopr@   z/Literal['collect', 'setup', 'call', 'teardown']rX   F)	_ispytestresultr   r)   Nc                x    t          |           || _        || _        || _        || _        || _        || _        d S rB   )r   r   r   r   r   r@   rX   )selfr   r   r   r   r@   rX   r   s           r:   __init__zCallInfo.__init__  s@     	y!!!
	 			r<   c                 h    | j         t          | d          t          t          | j                  S )zlThe return value of the call, if it didn't raise.

        Can only be accessed if excinfo is None.
        Nz has no valid result)r   r   r   r   r   r   s    r:   r   zCallInfo.result1  s7     <# D!@!@!@AAA GT\***r<   funczCallable[[], TResult]r   .zCallInfo[TResult]c           	      ^   d}t          j                    }t          j                    }	  |            }n=# t          $ r0 t	          j                    }|t          |j        |          r d}Y nw xY wt          j                    }||z
  }	t          j                    }
 | ||
|	|||d          S )av  Call func, wrapping the result in a CallInfo.

        :param func:
            The function to call. Called without arguments.
        :param when:
            The phase in which the function is called.
        :param reraise:
            Exception or exceptions that shall propagate if raised by the
            function, instead of being wrapped in the CallInfo.
        NT)r   r   r@   rX   r   r   r   )r   timeperf_counterBaseExceptionr   from_currentr   r   )clsr   rX   r   r   r   precise_startr   precise_stopr@   r   s              r:   r   zCallInfo.from_call>  s    & +--	(,FF 	 	 	#022G"z'-'I'I"FFF		 *,,-/{}}s
 
 
 	
s   
5 7A/.A/c                 \    | j         d| j        d| j        dS d| j        d| j         dS )Nz<CallInfo when=z	 result: >z	 excinfo=)r   rX   r   r   s    r:   __repr__zCallInfo.__repr__i  sD    <LTYLL4<LLLLHHHt|HHHHr<   rB   )__name__
__module____qualname____doc__r   r   __annotations__r   r   r8   boolr   propertyr   classmethodr   r
   r	   r   strr   r   r<   r:   r   r     s         :9gmM23333LLL
KKKOOO
;;;;    ! -67 	
   @  
   & 
+ 
+ 
+ 
+ X
+  (
 (
%(
 @(
 $}%uT--@#-E'FFG
	(
 
(
 (
 (
 [(
TI# I I I I I Ir<   r   c                 ,    t          j        | |          S rB   )r   from_item_and_callr   s     r:   r   r   o  s    (t444r<   	collectorc                 "    t                                fdd          }d }|j        sd}n4t          g}t          j                            d          }||                    |j                   t          |j        j
        t          |                    rvd}                     |j        d          }t          |t                    sJ t          |                      |j        }|sJ t!          |j                  |j        |j        f}nTd}                     |j                  }t+          |d          s&t          |t                     sJ t-          |          }|}|j        s|j        nd }	t1           j        |||	          }
||
_        |
S )	Nc                  F    t                                                     S rB   )listcollectr   s   r:   rD   z,pytest_make_collect_report.<locals>.<lambda>t  s    d9+<+<+>+>&?&? r<   r   r}   unittestr   r   r   
toterminal)r   r   r   r   r   modulesgetrR   SkipTestr   r   tuple_repr_failure_pyr   repr	reprcrashr   pathlinenomessagerepr_failurerQ   r   r   r   rY   ry   )r   ry   longreproutcomeskip_exceptionsr   r_r	errorinfor   r]   s   `          r:   pytest_make_collect_reportr  s  s   ????KKDEIH< !:B");??:..""8#4555dl(%*@*@AA 	!G++DL&AABb"455??tBxx??5AHH1AFQXqy9HHG!..t|<<I9l33 8!)S11111,Y77	 H $6T[[$F
	('8V
D
DCCHJr<   c                   j    e Zd ZdZddZdeddfdZdeg ef         de	ddfd	Z
d
ee         ddfdZdS )rb   aE  Shared state for setting up/tearing down test items or collectors
    in a session.

    Suppose we have a collection tree as follows:

    <Session session>
        <Module mod1>
            <Function item1>
        <Module mod2>
            <Function item2>

    The SetupState maintains a stack. The stack starts out empty:

        []

    During the setup phase of item1, setup(item1) is called. What it does
    is:

        push session to stack, run session.setup()
        push mod1 to stack, run mod1.setup()
        push item1 to stack, run item1.setup()

    The stack is:

        [session, mod1, item1]

    While the stack is in this shape, it is allowed to add finalizers to
    each of session, mod1, item1 using addfinalizer().

    During the teardown phase of item1, teardown_exact(item2) is called,
    where item2 is the next item to item1. What it does is:

        pop item1 from stack, run its teardowns
        pop mod1 from stack, run its teardowns

    mod1 was popped because it ended its purpose with item1. The stack is:

        [session]

    During the setup phase of item2, setup(item2) is called. What it does
    is:

        push mod2 to stack, run mod2.setup()
        push item2 to stack, run item2.setup()

    Stack:

        [session, mod2, item2]

    During the teardown phase of item2, teardown_exact(None) is called,
    because item2 is the last item. What it does is:

        pop item2 from stack, run its teardowns
        pop mod2 from stack, run its teardowns
        pop session from stack, run its teardowns

    Stack:

        []

    The end!
    r)   Nc                     i | _         d S rB   )stackr   s    r:   r   zSetupState.__init__  s      	


r<   ri   c                    |                                 }| j                                        D ]\  }\  }}||v s
J d            |r||t          | j                  d         D ]e}|| j        vsJ |j        gdf| j        |<   	 |                                 5# t          $ r$}| j        |         d         |f| j        |<   |d}~ww xY wdS )z4Setup objects along the collector chain to the item.z(previous item was not torn down properlyNr   )	listchainr  itemsrW   rz   rv   r    )r   ri   needed_collectorscol
finalizersexcs         r:   rv   zSetupState.setup  s    NN,, '+j&6&6&8&8 	 	"C"*c++++-W+++ 	 %S__%6%67 	 	Cdj(((( #~t4DJsO		   #':c?1#5s";
3		 	s   B
C$CC	finalizerr   c                     |rt          |t                    rJ t          |          sJ || j        v sJ || j        f            | j        |         d                             |           dS )zgAttach a finalizer to the given node.

        The node must be currently active in the stack.
        r   N)r   r   callabler  rR   )r   r  r   s      r:   addfinalizerzSetupState.addfinalizer  s{    
 3JtU33333	"""""tz!!!D$*#5!!!
4""9-----r<   rj   c           	         |r|                                 pg }g }| j        rt          | j                                                  |dt	          | j                           k    rn| j                                        \  }\  }}g }|rN|                                }	  |             n,# t          $ r}	|                    |	           Y d}	~	nd}	~	ww xY w|Nt	          |          dk    r|	                    |           n3|r1d|}
|                    t          |
|ddd                              | j        t	          |          dk    r|d         |rt          d|ddd                   |	| j        rJ dS dS )zTeardown the current stack up until reaching nodes that nextitem
        also descends from.

        When nextitem is None (meaning we're at the last item), the entire
        stack is torn down.
        Nr   zerrors while tearing down r   zerrors during test teardown)r  r  r   keysrW   popitemr   r    rR   extendr$   )r   rj   r  
exceptionsr   r  _these_exceptionsfinr   msgs              r:   rg   zSetupState.teardown_exact  s    %=););)=)=C*,
j 	SDJOO%%&&*;<Mc$*oo<M*NNN$(J$6$6$8$8!D/:q! / nn&&/CEEEE# / / /$++A......../	  / #$$))!!"23333! S;4;;!!"4S:J44R4:P"Q"QRRR! j 	S$ z??aQ- 	V$%BJttQStDTUUUz!!> !!s    
B+ +
C5CC)r)   N)r   r   r   r   r   r   rv   r   objectr   r  r   rg   r   r<   r:   rb   rb     s        = =~
 
 
 
$ 4    *.hr6z&: .$ .4 . . . . "x~  "$  "  "  "  "  "  "r<   rb   c                     | j         }|                    |            |                    |           }|j                            dd           }|r(t          ||          r|                    | ||           |S )Nr   ry   r   )rn   pytest_collectstartr  __dict__r   r   r   )r   rn   r]   ry   s       r:   collect_one_noder(     s    OE		22299I9NNC<FD))D O+D#66 O''YT#'NNNJr<   )r=   r'   r)   N)r`   r&   r)   N)TN)T)Lr   r   dataclassesr   r   typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   _pytestr   _pytest._code.coder   r   r   _pytest.compatr   _pytest.config.argparsingr   _pytest.deprecatedr   _pytest.nodesr   r   r   _pytest.outcomesr   r   r   r    version_infoexceptiongroupr$   typing_extensionsr%   _pytest.mainr&   _pytest.terminalr'   r;   r_   re   rh   r   rr   rp   r   r   r   r   r   r   r   r|   r   r   r   	dataclassr   r   r  rb   r(  r   r<   r:   <module>r8     s%   9 9 



     				 



                                                                               % % % % % % " " " " " "             1 1 1 1 1 1 , , , , , , + + + + + +             , , , , , , - - - - - - # # # # # #             ! ! ! ! ! ! - - - - - - $ $ $ $ $ $ ) ) ) ) ) )BQB'!!111111 2))))))$$$$$$111111V     *K K K K@' ' ' '- - - -$ (4. T     >B 
,4TN	*   0	 	$ 	 	 	 	)t ) ) ) ) )
d t    ()$ )(4. )T ) ) ) )!
!EF!	! ! ! !"	Z 	HU3S==Q4R 	 	 	 	" KO
 


<
CG

 
 
 
&8 * QU    
<   & ')t
,
,
, ]I ]I ]I ]I ]Iww ]I ]I  ]I@5D 5 5: 5 5 5 5)     >K" K" K" K" K" K" K" K"\	 m      r<   