
    ziZ                       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Zd dlm	Z	 d dl
Z
d dlm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) ej*        d k     rd d!l+m,Z, erd d"l-m.Z. d d#l/m0Z0 d$ Z1 G d% d&          Z2dId-Z3dJd4Z4dKd7Z5 G d8 d9e2          Z6e G d: d;e2                      Z7 G d< d=e          Z8dLdAZ9dMdEZ:dNdFZ;dOdHZ<dS )P    )annotations)Iterable)Iterator)Mapping)SequenceN)StringIO)pprint)Any)cast)final)Literal)NoReturn)TYPE_CHECKING)ExceptionChainRepr)ExceptionInfo)ExceptionRepr)	ReprEntry)ReprEntryNative)ReprExceptionInfoReprFileLocation)ReprFuncArgs)
ReprLocalsReprTraceback)TerminalRepr)TerminalWriter)Config)	Collector)Item)fail)skip)      )BaseExceptionGroup)Self)CallInfoc                    	 | j         S # t          $ rU | j        } dj        |d         d d          }d                    |d         |d         ||d                   x| _         }|cY S w xY w)Nz{}.{}.{}version_infor#   z[{}] {} -- Python {} {}idsysplatform
executable)_workerinfocacheAttributeError
workerinfoformat)nodedverss       R/root/projects/openclaw-proxy/venv/lib/python3.11/site-packages/_pytest/reports.pygetworkerinfoliner6   1   s    $$   Oj>!22A2!67$=$D$DdGQ}%sAlO%
 %
 	
 s   	 AA('A(c                     e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   d2dZerd3dZd4dZd5dZe	d6d            Z
e	d6d            Ze	d6d            Ze	d6d            Ze	d7d            Ze	d7d             Ze	d7d!            Ze	d6d"            Ze	d7d#            Ze	d8d$            Zd9d*Zd:d,Zed;d0            Zd1S )<
BaseReport
str | Nonewhen"tuple[str, int | None, str] | NonelocationONone | ExceptionInfo[BaseException] | tuple[str, int, str] | str | TerminalReprlongreprzlist[tuple[str, str]]sectionsstrnodeid&Literal['passed', 'failed', 'skipped']outcomekwr
   returnNonec                :    | j                             |           d S N)__dict__update)selfrD   s     r5   __init__zBaseReport.__init__G   s    R         keyc                    d S rH    )rK   rN   s     r5   __getattr__zBaseReport.__getattr__L   s      rM   outr   c                z   t          | d          r+t          | j                  }|r|                    |           | j        }|d S t          |d          r,t          t          |          }|                    |           d S 	 t          |          }n# t          $ r d}Y nw xY w|                    |           d S )Nr1   
toterminalz<unprintable longrepr>)
hasattrr6   r1   liner>   r   r   rT   r@   UnicodeEncodeError)rK   rR   worker_infor>   longrepr_terminalr4   s         r5   rT   zBaseReport.toterminalN   s    4   	&+DI66K &%%%=F8\** 	 $\8 < <((------MM% - - -,-HHQKKKKKs   B B#"B#prefixIterator[tuple[str, str]]c              #  Z   K   | j         D ] \  }}|                    |          r||fV  !d S rH   )r?   
startswith)rK   rZ   namecontents       r5   get_sectionszBaseReport.get_sectionsb   sJ      !] 	& 	&MD'v&& &go%%%	& 	&rM   c                    t                      }t          |          }d|_        |                     |           |                                }|                                S )zRead-only property that returns the full string representation of
        ``longrepr``.

        .. versionadded:: 3.0
        F)r   r   	hasmarkuprT   getvaluestrip)rK   filetwexcs       r5   longreprtextzBaseReport.longreprtextg   sN     zzD!!mmooyy{{rM   c                f    d                     d |                     d          D                       S )z_Return captured log lines, if log capturing is enabled.

        .. versionadded:: 3.5
        
c              3      K   | ]	\  }}|V  
d S rH   rP   .0rZ   r_   s      r5   	<genexpr>z$BaseReport.caplog.<locals>.<genexpr>{   s7       
 
)G
 
 
 
 
 
rM   zCaptured logjoinr`   rK   s    r5   caplogzBaseReport.caplogu   sD     yy 
 
-1->->~-N-N
 
 
 
 
 	
rM   c                f    d                     d |                     d          D                       S )zbReturn captured text from stdout, if capturing is enabled.

        .. versionadded:: 3.0
         c              3      K   | ]	\  }}|V  
d S rH   rP   rl   s      r5   rn   z'BaseReport.capstdout.<locals>.<genexpr>   7       
 
)G
 
 
 
 
 
rM   zCaptured stdoutro   rq   s    r5   	capstdoutzBaseReport.capstdout   E     ww 
 
-1->->?P-Q-Q
 
 
 
 
 	
rM   c                f    d                     d |                     d          D                       S )zbReturn captured text from stderr, if capturing is enabled.

        .. versionadded:: 3.0
        rt   c              3      K   | ]	\  }}|V  
d S rH   rP   rl   s      r5   rn   z'BaseReport.capstderr.<locals>.<genexpr>   rv   rM   zCaptured stderrro   rq   s    r5   	capstderrzBaseReport.capstderr   rx   rM   boolc                    | j         dk    S )zWhether the outcome is passed.passedrC   rq   s    r5   r~   zBaseReport.passed        |x''rM   c                    | j         dk    S )zWhether the outcome is failed.failedr   rq   s    r5   r   zBaseReport.failed   r   rM   c                    | j         dk    S )zWhether the outcome is skipped.skippedr   rq   s    r5   r   zBaseReport.skipped   s     |y((rM   c                B    | j                             d          d         S )z3The path portion of the reported node, as a string.z::r   )rA   splitrq   s    r5   fspathzBaseReport.fspath   s     {  &&q))rM   c                    dS )a6  **Experimental** Whether this report should be counted towards the
        totals shown at the end of the test session: "1 passed, 1 failure, etc".

        .. note::

            This function is considered **experimental**, so beware that it is subject to changes
            even in patch releases.
        TrP   rq   s    r5   count_towards_summaryz BaseReport.count_towards_summary   s	     trM   c                .    | j         | j         \  }}}|S dS )a  **Experimental** The head line shown with longrepr output for this
        report, more commonly during traceback representation during
        failures::

            ________ Test.foo ________


        In the example above, the head_line is "Test.foo".

        .. note::

            This function is considered **experimental**, so beware that it is subject to changes
            even in patch releases.
        N)r<   )rK   _fspath_linenodomains       r5   	head_linezBaseReport.head_line   s$      =$'+}$GWfMtrM   configr   default_markupMapping[str, bool]tuple[str, Mapping[str, bool]]c                T   |j                             | |          \  }}}t          |t                    r||fS t          |t                    rFt          |          dk    r3|\  }}t          |t                    rt          |t                    r||fS t          d|d           d S )N)reportr      zSpytest_report_teststatus() hook (from a plugin) returned an invalid verbose value: z8.
Expected either a string or a tuple of (word, markup).)hookpytest_report_teststatus
isinstancer@   r   lenr   r!   )rK   r   r   	_category_shortverbosewordmarkups           r5   _get_verbose_word_with_markupz(BaseReport._get_verbose_word_with_markup   s     &,[%I%I &J &
 &
"	67 gs## 	+N**gx(( 	$S\\Q->->"LD&$$$ $FG)D)D $V|#,)0, , ,	
 	
 	
 	
 	
rM   dict[str, Any]c                     t          |           S )zReturn the contents of this report as a dict of builtin entries,
        suitable for serialization.

        This was originally the serialize_report() function from xdist (ca03269).

        Experimental method.
        )_report_to_jsonrq   s    r5   _to_jsonzBaseReport._to_json   s     t$$$rM   
reportdictdict[str, object]r&   c                0    t          |          } | di |S )a  Create either a TestReport or CollectReport, depending on the calling class.

        It is the callers responsibility to know which class to pass here.

        This was originally the serialize_report() function from xdist (ca03269).

        Experimental method.
        rP   )_report_kwargs_from_json)clsr   kwargss      r5   
_from_jsonzBaseReport._from_json   s#     **55s}}V}}rM   N)rD   r
   rE   rF   )rN   r@   rE   r
   rR   r   rE   rF   )rZ   r@   rE   r[   rE   r@   )rE   r|   )rE   r9   )r   r   r   r   rE   r   )rE   r   )r   r   rE   r&   )__name__
__module____qualname____annotations__rL   r   rQ   rT   r`   propertyrh   rr   rw   r{   r~   r   r   r   r   r   r   r   classmethodr   rP   rM   r5   r8   r8   =   s?        0000    $###KKK3333! ! ! !  43333   (& & & &
    X 
 
 
 X
 
 
 
 X
 
 
 
 X
 ( ( ( X( ( ( ( X( ) ) ) X) * * * X* 	 	 	 X	    X(
 
 
 
*% % % % 
 
 
 [
 
 
rM   r8   	type_namer@   report_classtype[BaseReport]rE   r   c                B   d}t                      }t          d|           t          d|  |           t          d| |           t          ||           t          d| |           t          d|           t          |                                          )Nz+https://github.com/pytest-dev/pytest/issueszd----------------------------------------------------------------------------------------------------)streamz,INTERNALERROR: Unknown entry type returned: zreport_name: zPlease report this bug at )r   r	   RuntimeErrorrc   )r   r   r   urlr   s        r5   _report_unserialization_failurer      s     8CZZF
9V$$$$
E)EEfUUUU
)<))&9999
:f%%%%
---f====
9V$$$$
v((
)
))rM   itemr    callCallInfo[None]excinfoExceptionInfo[BaseException]c                    |j         dk    r|                     |          }n0|                     || j                            dd                    }|S )Nr   tbstyleauto)style)r:   repr_failure_repr_failure_pyr   	getoption)r   r   r   r>   s       r5   _format_failed_longreprr     s`     yF$$W-- ((4;00FCC ) 
 
 OrM   EExceptionInfo[BaseExceptionGroup[BaseException | BaseExceptionGroup]]tuple[str, int, str]c                4   |                                 }|
J d            t          d |j        j        D                       r?|                                 d d         \  }}|J t          j        |          |dz   f}d}n"t          |j                  |j	        f}|j
        }g }|j        j        D ]D}t          |dd           p|j        r|j        d         nd }	|	r|	|vr|                    |	           E|rd                    |          n|}
g ||
R }|S )	N=There should always be a traceback entry for skipping a test.c              3  8   K   | ]}t          |d d          V  dS )_use_item_locationFN)getattr)rm   r"   s     r5   rn   z?_format_exception_group_all_skipped_longrepr.<locals>.<genexpr>  s@        7;*E22     rM   r      r   msgr   z; )_getreprcrashallvalue
exceptions
reportinfoosr   r@   pathlinenomessager   argsappendrp   )r   r   rr   rV   locdefault_msgmsgs	exceptionmreasonr>   s               r5   ,_format_exception_group_all_skipped_longreprr     sW    	A==G ==   ?F}?W     	  __&&rr*
dyq)16{{AH%i D]-  	Iud++ 
!*9IN1T 	
  	$KKNNN $5TYYt___+F~f~~HOrM   c                  V    e Zd ZU dZdZded<   	 	 	 	 	 d$d%dZd&dZed'd#            Z	dS )(
TestReportzBasic test report object (also used for setup and teardown calls if
    they fail).

    Reports can contain arbitrary extra attributes.
    Fr@   wasxfailrP   r   NrA   r<   tuple[str, int | None, str]keywordsMapping[str, Any]rC   rB   r>   r=   r:   $Literal['setup', 'call', 'teardown']r?   Iterable[tuple[str, str]]durationfloatstartstopuser_properties#Iterable[tuple[str, object]] | NonerE   rF   c                   || _         || _        || _        || _        || _        || _        t          |pg           | _        t          |          | _        || _	        |	| _
        |
| _        | j                            |           d S rH   )rA   r<   r   rC   r>   r:   listr   r?   r   r   r   rI   rJ   )rK   rA   r<   r   rC   r>   r:   r?   r   r   r   r   extras                r5   rL   zTestReport.__init__>  s    (  6> ,4  ! ;?	  $O$9r:: X  ( "
	U#####rM   c           	     R    d| j         j         d| j        d| j        d| j        d	S )N< z when=	 outcome=>)	__class__r   rA   r:   rC   rq   s    r5   __repr__zTestReport.__repr__|  s8    i4>*iiT[ii$)iiX\XdiiiirM   r   r    r   r   c                   |j         }|dk    sJ |j        }|j        }|j        }d |j        D             }|j        }g }	|j        sd}
d}njt          |t                    sd}
|}nOt          |j        t          j
                  rd}
|                                }|
J d            |j        j        rC|                                dd         \  }}|J t          j        |          |d	z   |j        f}nt#          |j                  |j        |j        f}nt          |j        t(                    rp|j                            t          j
                  d	         Fd}
t-          t          t(          t.          t(          z                    |          }t1          ||          }nd}
t3          |||          }|j        D ]#\  }}}|	                    d
| d| |f           $ | |j        |j        ||
|||	||||j                  S )zCreate and fill a TestReport with standard item and call info.

        :param item: The item.
        :param call: The call info.
        collectc                    i | ]}|d S )r   rP   )rm   xs     r5   
<dictcomp>z1TestReport.from_item_and_call.<locals>.<dictcomp>  s    000QAq000rM   r~   Nr   r   r   r   r   z	Captured r   )r   )r:   r   r   r   r   r   r   r   r   r"   	Exceptionr   r   r   r   r   r   r@   r   r   r%   r   r   BaseExceptionr   r   _report_sectionsr   rA   r<   r   )r   r   r   r:   r   r   r   r   r   r?   rC   r>   r   r   rV   rwhenrN   r_   s                     r5   from_item_and_callzTestReport.from_item_and_call  sR    yy    =
y00$-000,| '	H>FG  H g}55 H""GM4>:: H#))++}}S %}} =3 B!%!2!22A2!6JD$+++ "	$19EHH #AFQXqyAHHGM+=>> H##DN33A6> $!*=;M+MN 	  HgVV"24wGG#'#8 	B 	BE3OO666u66@AAAAsKM 0
 
 
 	
rM   )rP   r   r   r   N)rA   r@   r<   r   r   r   rC   rB   r>   r=   r:   r   r?   r   r   r   r   r   r   r   r   r   rE   rF   r   )r   r    r   r   rE   r   )
r   r   r   __doc____test__r   rL   r   r   r  rP   rM   r5   r   r   1  s           H MMM /1?C!<$ <$ <$ <$ <$|j j j j E
 E
 E
 [E
 E
 E
rM   r   c                  B    e Zd ZdZdZ	 dddZedd            ZddZdS )CollectReportzSCollection report object.

    Reports can contain arbitrary extra attributes.
    r   rP   rA   r@   rC   rB   r>   r=   resultlist[Item | Collector] | Noner?   r   rE   rF   c                    || _         || _        || _        |pg | _        t	          |          | _        | j                            |           d S rH   )rA   rC   r>   r
  r   r?   rI   rJ   )rK   rA   rC   r>   r
  r?   r   s          r5   rL   zCollectReport.__init__  sU       ! l XU#####rM   r;   c                     | j         d | j         fS rH   )r   rq   s    r5   r<   zCollectReport.location  s     T4;//rM   c                R    d| j         dt          | j                   d| j        dS )Nz<CollectReport z lenresult=r   r   )rA   r   r
  rC   rq   s    r5   r   zCollectReport.__repr__  s3    ggg3t{;K;KggVZVbggggrM   N)rP   )rA   r@   rC   rB   r>   r=   r
  r  r?   r   rE   rF   )rE   r;   r   )	r   r   r   r  r:   rL   r   r<   r   rP   rM   r5   r	  r	    s~         
 D /1$ $ $ $ $B 0 0 0 X0
h h h h h hrM   r	  c                      e Zd Zd
dZddZd	S )CollectErrorReprr   r@   rE   rF   c                    || _         d S rH   )r>   )rK   r   s     r5   rL   zCollectErrorRepr.__init__  s    rM   rR   r   c                >    |                     | j        d           d S )NT)red)rV   r>   )rK   rR   s     r5   rT   zCollectErrorRepr.toterminal   s     D)))))rM   N)r   r@   rE   rF   r   )r   r   r   rL   rT   rP   rM   r5   r  r    s<           * * * * * *rM   r  r   CollectReport | TestReportdict[str, Any] | Nonec                    t          | t          t          z            r%|                                 }| j        j        |d<   |S d S )N$report_type)r   r   r	  r   r   r   )r   datas     r5   pytest_report_to_serializabler    sD     &*}455   %/8^4rM   r  r   !CollectReport | TestReport | Nonec                    d| v ro| d         dk    rt                               |           S | d         dk    rt                              |           S J d                    | d                               d S )Nr  r   r	  Fz(Unknown report_type unserialize data: {})r   r   r	  r0   )r  s    r5   pytest_report_from_serializabler    s     <//((....!_44 ++D111	
@GG 
 
 	
 	
 	
 4rM   c                   dddfddddfd}| j                                         }t          | j        d          rQt          | j        d          r$t          | j        d	          r ||           |d<   n"t	          | j                  |d<   n
| j        |d<   |D ]K}t          ||         t          j                  rt          j        ||                   ||<   @|dk    rd||<   L|S )zReturn the contents of this report as a dict of builtin entries,
    suitable for serialization.

    This was originally the serialize_report() function from xdist (ca03269).
    entryReprEntry | ReprEntryNativerE   r   c                    t          j        |           }|                                D ],\  }}t          |d          rt          j        |          ||<   -t	          |           j        |d}|S )NrI   )typer  )dataclassesasdictitemsrU   r!  r   )r  r  rN   r   
entry_datas        r5   serialize_repr_entryz-_report_to_json.<locals>.serialize_repr_entry$  sr     !%((**,, 	6 	6JCuj)) 6'.u55S	"5kk2DAA
rM   reprtracebackr   c                \    t          j        |           }fd| j        D             |d<   |S )Nc                &    g | ]} |          S rP   rP   )rm   r   r&  s     r5   
<listcomp>zE_report_to_json.<locals>.serialize_repr_traceback.<locals>.<listcomp>0  s2     !
 !
 !
()  ##!
 !
 !
rM   reprentries)r"  r#  r+  )r'  r
  r&  s     r5   serialize_repr_tracebackz1_report_to_json.<locals>.serialize_repr_traceback.  sJ    #M22!
 !
 !
 !
-:-F!
 !
 !
} rM   	reprcrashReprFileLocation | Noner  c                2    | t          j        |           S d S rH   )r"  r#  )r-  s    r5   serialize_repr_crashz-_report_to_json.<locals>.serialize_repr_crash5  s       %i0004rM   repr8   c                X   | j         J t          t          | j                   } |j                   |j                  |j        d}t          |t                    rDg |d<   |j        D ]6\  }}}|d         	                     |           |          |f           7nd |d<   |S )N)r-  r'  r?   chain)
r>   r   r   r-  r'  r?   r   r   r3  r   )r1  r>   r
  repr_traceback
repr_crashdescriptionr0  r,  s         r5   serialize_exception_longreprz5_report_to_json.<locals>.serialize_exception_longrepr=  s    |'''s|44--h.@AA55h6LMM )"
 "

 h 233 	# F7O;C>  7
Kw&&00@@,,Z88#    #F7OrM   rT   r>   r
  N)r  r  rE   r   )r'  r   rE   r   )r-  r.  rE   r  )r1  r8   rE   r   )	rI   copyrU   r>   r@   r   r   PathLiker   )r   r7  r2   r^   r0  r&  r,  s       @@@r5   r   r     sU                    . 	Av-- (6?O44 	1O[:
 :
 	1 98@@AjMM00AjMM*  agr{++ 	i$((AdGGXAdGHrM   r   c                     fdfd}dd} d         rd d         v rd d         v r | d         d                   } | d         d                   } d         d	         rQg } d         d	         D ]0\  }}}|                      ||           ||          |f           1t          |          }	nt          ||
          }	 d         d         D ]}
 |	j        |
  |	 d<    S )zReturn **kwargs that can be used to construct a TestReport or
    CollectReport instance.

    This was originally the serialize_report() function from xdist (ca03269).
    c                   | d         }| d         }|dk    r~d }d }d }|d         rt          di |d         }|d         rt          di |d         }|d         rt          |d         d                   }t          |d         ||||d         	          }n2|d
k    rt	          |d                   }nt          |t                     |S )Nr  r!  r   reprfuncargsreprfileloc
reprlocalslinesr   )r?  r<  r>  r=  r   r   rP   )r   r   r   r   r   r   r   )r%  r  
entry_typer<  r=  r>  	reprentryr   s          r5   deserialize_repr_entryz8_report_kwargs_from_json.<locals>.deserialize_repr_entrym  s   &!'
$$LKJN# D+CCd>.BCCM" F.EEm1DEEL! E'\(:7(CDD
5>7m)%'7m6 6 6II ,,,'W66II+J
JOOOrM   c                J    fd| d         D             | d<   t          di | S )Nc                &    g | ]} |          S rP   rP   )rm   r   rB  s     r5   r*  zP_report_kwargs_from_json.<locals>.deserialize_repr_traceback.<locals>.<listcomp>  s2     .
 .
 .
*+""1%%.
 .
 .
rM   r+  rP   r   )repr_traceback_dictrB  s    r5   deserialize_repr_tracebackz<_report_kwargs_from_json.<locals>.deserialize_repr_traceback  sM    .
 .
 .
 .
/B=/Q.
 .
 .
M* 332333rM   repr_crash_dictr  c                "    | t          di | S d S )NrP   r   )rG  s    r5   deserialize_repr_crashz8_report_kwargs_from_json.<locals>.deserialize_repr_crash  s!    &#66o6664rM   r>   r-  r'  r3  )r'  r-  r?   )rG  r  )r   r   r   
addsection)r   rF  rI  r'  r-  r3  repr_traceback_datarepr_crash_datar6  exception_infosectionrB  s   `          @r5   r   r   f  s       64 4 4 4 4    	: 0:j111z*55522z"?3
 
 +*:j+A++NOO	j!'* 	EEOFF 	 	A#_k 223FGG..??#    FXF FNN /+#  N
 "*-j9 	0 	0G%N%w///!/
:rM   )r   r@   r   r   rE   r   )r   r    r   r   r   r   )r   r    r   r   rE   r   )r   r  rE   r  )r  r   rE   r  )r   r8   rE   r   )r   r   rE   r   )=
__future__r   collections.abcr   r   r   r   r"  ior   r   r	   systypingr
   r   r   r   r   r   _pytest._code.coder   r   r   r   r   r   r   r   r   r   r   _pytest._ior   _pytest.configr   _pytest.nodesr   r    _pytest.outcomesr!   r"   r)   exceptiongroupr%   typing_extensionsr&   _pytest.runnerr'   r6   r8   r   r   r   r   r	  r  r  r  r   r   rP   rM   r5   <module>r\     s   " " " " " " $ $ $ $ $ $ $ $ $ $ $ $ # # # # # # $ $ $ $ $ $           				       



                                           1 1 1 1 1 1 , , , , , , , , , , , , ( ( ( ( ( ( . . . . . . 0 0 0 0 0 0 / / / / / / + + + + + + ) ) ) ) ) ) , , , , , , + + + + + + & & & & & & ! ! ! ! ! ! # # # # # #       ! ! ! ! ! ! ! ! ! ! ! ! g111111  (&&&&&&''''''	 	 	u u u u u u u up* * * *
 
 
 
   BT
 T
 T
 T
 T
 T
 T
 T
n 0h 0h 0h 0h 0hJ 0h 0h 0hf* * * * *| * * *      F F F FRP P P P P PrM   