
    עi[^                       d 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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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/m0Z0 ddl/m1Z1 ejd                  d	d  d!k  rdd"l3m4Z4 erdd#lm5Z5 dd	lZdd	l6Z7e8e9e:   e:ejj                  f   e8d$   z  Z;	 	 	 	 	 	 	 	 d6d%Z< G d& d'e)      Z= G d( d)e*      Z> ed*+      d7d,       Z?d8d-Z@d9d.ZA G d/ d0e
      ZBd:d1ZCd2ZD ed*3      d;d4       ZE	 	 	 	 d<d5ZFy	)=z4Discover and run std-library "unittest" style tests.    )annotations)Callable)	Generator)Iterable)Iterator)auto)EnumN)Any)TYPE_CHECKING)TestCase)ExceptionInfo)assert_never)is_async_function)hookimpl)FixtureRequest)MonkeyPatch)	Collector)Item)exit)fail)skip)xfail)Class)Function)Module)CallInfo)check_interactive_exception)SubtestContext)SubtestReport         )ExceptionGroup)TracebackType)NNNc                    	 t         j                  d   }t        ||j                        sy 	 t        j                  |      ry t        j                  | ||      S # t        $ r Y y w xY w)Nunittest)nameobj)	sysmodules
issubclassr   	Exceptioninspect
isabstractUnitTestCasefrom_parent)	collectorr(   r)   uts       Q/sites/domain-asset-master/.venv/lib/python3.12/site-packages/_pytest/unittest.pypytest_pycollect_makeitemr5   :   sl    [[$ #r{{+ , ###IDc#BB  s   )A 	A'&A'c                  .    e Zd ZdZd ZddZddZddZy)	r0   Tc                $    | j                  d      S )NrunTestr)   selfs    r4   newinstancezUnitTestCase.newinstanceS   s     xx	""    c              #    K   ddl m} | j                  }t        |dd      sy t	        |      }|s2| j                  |       | j                  |       | j                          | j                  j                  j                  | j                         | j                          |       }d}|j                  | j                        D ]A  }t        | j                  |      }t        |dd      s't        j                  | |       d}C |spt        | j                  dd       }|Vt         j"                  j%                  dd       }	|	||	j&                  j(                  k7  rt        j                  | d       y y y y w)	Nr   )
TestLoader__test__TF)r(   r8   twisted.trial.unittest)r'   r?   r)   getattr_is_skipped'_register_unittest_setup_method_fixture&_register_unittest_setup_class_fixture_register_setup_class_fixturesession_fixturemanagerparsefactoriesr<   nodeidgetTestCaseNamesTestCaseFunctionr1   r*   r+   getr   r8   )
r;   r?   clsskippedloaderfoundsomethingr(   xruntestr3   s
             r4   collectzUnitTestCase.collect[   sO    'hhsJ-c"88=77<..0$$33D4D4D4FT++DHH5 	"D$'A1j$/"..t$.??!N	" dhh	48G"[[__%=tD:BKK,?,?!?*66t)6LL "@ # s   E9E;c                   t        dd      t        dd      yt        dd       dfd	 	 	 	 dfd}| j                  j                  j                  dj                   || j
                  d	d
       y)zSRegister an auto-use fixture to invoke setUpClass and
        tearDownClass (#517).
setUpClassNtearDownClassdoClassCleanupsc                      y N r[   r=   r4   <lambda>zEUnitTestCase._register_unittest_setup_class_fixture.<locals>.<lambda>       r=   c                     t        dd       } | sy | D cg c]  \  }}}|
 }}}t        |      dk(  r|d   t        d|      c c}}w )NtearDown_exceptions   r   zUnittest class cleanup errors)rB   lenr$   )	exc_infos_exc
exceptionsrN   s       r4   process_teardown_exceptionszXUnitTestCase._register_unittest_setup_class_fixture.<locals>.process_teardown_exceptions   s^      %:DAI1:;+1c1#;J; :!# m#$%DjQQ <s   Ac              3  ,  K   | j                   }t        |      r#|j                  }t        j                  |d      	          d  	                            y # t        $ r                    w xY w#                   w xY wwNT)_use_item_location)rN   rC   __unittest_skip_why__r   r-   )requestrN   reasoncleanuprf   setupteardowns      r4   unittest_setup_class_fixturezYUnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture   s      ++C322nnVEE G .'J	+- ! I/1 	+-s5   =BA% B	B B%A>>BBB_unittest_setUpClass_fixture_classTr(   funcrJ   scopeautousereturnNonerk   r   rx   zGenerator[None]rB   rG   rH   _register_fixture__qualname__rJ   )r;   rN   rp   rm   rf   rn   ro   s    ` @@@@r4   rE   z3UnitTestCase._register_unittest_setup_class_fixturez   s     \4036=X-#0,?	R	.#	.	. 	.0 	$$6601A1A0BC-;; 	7 	
r=   c                    t        |dd      t        |dd      y	 	 	 	 d	fd}| j                  j                  j                  d|j                   || j
                  dd       y)
zWRegister an auto-use fixture to invoke setup_method and
        teardown_method (#517).setup_methodNteardown_methodc              3     K   | j                   }t        |      r#|j                  }t        j                  |d       || j
                         d   || j
                         y y wrh   )instancerC   rj   r   r-   function)rk   r;   rl   rn   ro   s      r4   unittest_setup_method_fixturez[UnitTestCase._register_unittest_setup_method_fixture.<locals>.unittest_setup_method_fixture   sl      ##D4 33nnVEE dG,,-#w//0 $s   A+A._unittest_setup_method_fixture_r   Trs   rz   r{   )r;   rN   r   rn   ro   s      @@r4   rD   z4UnitTestCase._register_unittest_setup_method_fixture   s     ^T23 148=X-	1#	1	1 	$$66233C3C2DE.;; 	7 	
r=   N)rx   zIterable[Item | Collector])rN   typerx   ry   )__name__
__module__r}   
nofuncargsr<   rT   rE   rD   r[   r=   r4   r0   r0   N   s     J#M>6
p
r=   r0   c                  2    e Zd ZU dZdZdZded<   d Zed        Z	d fdZ
d fd	Zdd
ZddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZdd	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 ddZ	 d 	 	 	 	 	 d!dZddZddZd"dZddZ	 	 	 	 d# fdZ	 	 	 	 	 	 	 	 d$dZd%dZ xZS )&rL   TFNz7list[_pytest._code.ExceptionInfo[BaseException]] | None_excinfoc                    t        | j                  t              sJ | j                  j                  | j                        S rZ   )
isinstanceparentr0   r)   r(   r:   s    r4   _getinstancezTestCaseFunction._getinstance   s-    $++|444{{tyy))r=   c                    | j                   S rZ   )r   r:   s    r4   	_testcasezTestCaseFunction._testcase   s    }}r=   c                f    d | _         t        | 	          t        j                  dk  rd | _        y y )Nr!   )_explicit_tearDownsuperrn   r*   version_info_cached_errors_and_skipsr;   	__class__s    r4   rn   zTestCaseFunction.setup   s3    =Ag% QUD) &r=   c                z    | j                   | j                          d | _         d | _        | `t        |           y rZ   )r   _obj	_instancer   ro   r   s    r4   ro   zTestCaseFunction.teardown   s:    "".##%&*D#	Nr=   c                     y rZ   r[   r;   testcases     r4   	startTestzTestCaseFunction.startTest       r=   c                   t        |      }	 t        j                  j                  t           j                  |      }|j                  }|j                  }| j                   j#                  dg       j%                         y # t        $ r 	 	 t        j                  | }|j                  dd       t        dj                  |      d       n8# t        j                  t        f$ r  t        $ r t        d|d       Y nw xY wnJ# t        $ r  t        j                  $ r+ t        j                  j                  j                         }Y nw xY wY w xY w)Nr   zCNOTE: Incompatible Exception Representation, displaying natively:

 Fpytracez6ERROR: Unknown Incompatible Exception representation:
r   )_handle_twisted_exc_info_pytest_coder   BaseExceptionfrom_exc_infovalue	traceback	TypeErrorformat_exceptioninsertr   joinr-   KeyboardInterruptfrom_current__dict__
setdefaultappend)r;   
rawexcinfoexcinforc   valuess        r4   _addexcinfozTestCaseFunction._addexcinfo   s8   -j9
	Emm11-@NNG
 A!!A. 	  R077@-  	EE&77DFMM3
 %8(9: $ ,,6>; % % >> E!--55BBDE)	EsV   AB 	EA CD2D?DDDEAE
EEEEc                    	 t        |d   t        j                        rt        |d   j                         | j                  |       y # t        $ r Y w xY w)Nr`   )r   r   r-   msgr   r   r;   r   r   s      r4   addErrorzTestCaseFunction.addError  sO    	*Q-8Z]&&' 	$  		s   5A	 		AAc                &    | j                  |       y rZ   )r   r   s      r4   
addFailurezTestCaseFunction.addFailure   s     	$r=   handle_subtestsc                   ddl m} d fd}|s |        y t        ||      rA |         j                  - j                  d   } j	                  |j
                  ||       y y t        j                  dk  r@ j                  j                  * j                         \  }}t        |      dk(  r |        y y  |        y )Nr   _SubTestc                     	 t        j                   d      # t         j                  $ r& j                  t        j                                Y y w xY wrh   )r   r-   r   r*   exc_info)rl   r;   s   r4   add_skipz*TestCaseFunction.addSkip.<locals>.add_skip*  s@    1nnVEE>> 1  01s    6AAr!   rw   )unittest.caser   r   r   
addSubTest	test_caser*   r   r   _outcome_obtain_errors_and_skipsra   )	r;   r   rl   r   r   r   r   subtest_errorsrc   s	   ` `      r4   addSkipzTestCaseFunction.addSkip%  s     	+	1 Jh)J}}(==, 2 2HhG ) ')dmm.D.D.P$($A$A$C!~&!+J , 
r=   c                    	 t        t        |             y # t         j                  $ r& | j                  t	        j
                                Y y w xY wrZ   )r   strr-   r   r*   r   )r;   r   r   rl   s       r4   addExpectedFailurez#TestCaseFunction.addExpectedFailureF  s:    	-#f+ 	-S\\^,	-s    6AAc                    d}|r|d|j                    z  }	 t        |d       y # t        j                  $ r& | j                  t	        j
                                Y y w xY w)NzUnexpected successz: Fr   )rl   r   r-   r   r*   r   )r;   r   rl   r   s       r4   addUnexpectedSuccessz%TestCaseFunction.addUnexpectedSuccessQ  sW    
 #R''C	-e$~~ 	-S\\^,	-s   & 6AAc                     y rZ   r[   r   s     r4   
addSuccesszTestCaseFunction.addSuccess_  r   r=   c                     y rZ   r[   r   s     r4   stopTestzTestCaseFunction.stopTestb  r   r=   c                     y rZ   r[   )r;   r   elapseds      r4   addDurationzTestCaseFunction.addDuratione  r   r=   c                R   ddl m} | j                  }|J  ||        t        | j                        r
 ||        y t        | j                  t              sJ t        | j                        xs t        | j                  j                        }| j                  j                  d      r!|s|j                  | _        t        |dd        t        || j                  | j                         	  ||        t        || j                         y # t        || j                         w xY w)Nr   )&maybe_wrap_pytest_function_for_tracing)resultusepdbtearDownc                      y rZ   r[   )argss    r4   r\   z*TestCaseFunction.runtest.<locals>.<lambda>  r]   r=   )_pytest.debuggingr   r   r   r)   r   r   r0   rC   config	getoptionr   r   setattrr(   delattr)r;   r   r   rO   s       r4   rS   zTestCaseFunction.runtesth  s    L==###.t4 TXX&D! dkk<888!$((+K{4;;??/KG{{$$X.w*2*;*;'*.@A Hdii2-%$)),$)),s   .	D D&c                T    t         |   |      } |j                  d       }|s|}|S )Nc                N    | j                   j                  j                  d       S )N
__unittest)frame	f_globalsrM   )rR   s    r4   r\   z4TestCaseFunction._traceback_filter.<locals>.<lambda>  s    !''++//== r=   )r   _traceback_filterfilter)r;   r   r   
ntracebackr   s       r4   r   z"TestCaseFunction._traceback_filter  s9     G-g6	%Y%%=

 "Jr=   c           	        |xt         d x\    t        |d      }n& xxt        d x\   n xn n  |}n}t        |       t        d    d ddddd      }t	        |j
                  t              r|j
                  nd }| j                  j                  | |      }t        j                  |t        |t        |j                              d d 	      }	| j                  j                  |	
       t        ||	      r| j                  j!                  | ||	       t"        j$                  dk  r]| j'                         \  }
}t)        |      dkD  r;t)        |
      dkD  r,|
d   }||d   u r|D ]  \  }}| j+                  ||d        y y y y y )Nr[   T)	_ispytestr   call)startstopdurationwhenr   )itemr   )r   kwargs)captured_outputcaptured_logs)report)noder   r   r!   r   Fr   )tupler   r   r   r   _messager   ihookpytest_runtest_makereportr   _newr   dictparamspytest_runtest_logreportr   pytest_exception_interactr*   r   r   ra   r   )r;   r   testr   exception_infounreachable	call_infor   r   
sub_reportr   non_subtest_skiplast_subset_errorr   rl   s                  r4   r   zTestCaseFunction.addSubTest  s    !.x4!H '4'!)[)TN
	  *$--=dmm4554i5P"''s4+<= 	

 	

++:+>&y*=JJ00	* 1 
 g%/3/L/L/N,N, #$q(S-@1-D$22$6!044,< N(&XvuMN 5 .E( &r=   c                   ddl m} t        j                  dk  sJ d       | j                  | j                  S | j
                  j                  j                  D cg c]  \  }}t        ||      r|||f }}}| j
                  j                  j                  D cg c]  \  }}t        ||      s||f }}}||f| _        ||fS c c}}w c c}}w )zMCompute or obtain the cached values for subtest errors and non-subtest skips.r   r   r!   z2This workaround only should be used in Python 3.10)
r   r   r*   r   r   r   r   errorsr   rO   )r;   r   rR   yr   non_subtest_skipss         r4   r   z)TestCaseFunction._obtain_errors_and_skips  s    *') 	
@	
) ((4000 ..55
1!X&1= F
 
 ..66
1a* F
 

 *89J(K%000

s   CCrw   )r   unittest.TestCaserx   ry   )r   _SysExcInfoTyperx   ry   )r   r  r   r  rx   ry   )r   r  rl   r   r   boolrx   ry   )r   )r   r  r   r  rl   r   rx   ry   rZ   )r   r  rl   z"twisted.trial.unittest.Todo | Nonerx   ry   )r   r  r   floatrx   ry   )r   z*_pytest._code.ExceptionInfo[BaseException]rx   z_pytest._code.Traceback)r   r
   r  r   r   z^ExceptionInfo[BaseException] | tuple[type[BaseException], BaseException, TracebackType] | Nonerx   ry   )rx   ztuple[list[Any], list[Any]])r   r   r}   r   failfastr   __annotations__r   propertyr   rn   ro   r   r   r   r   r   r   r   r   r   r   rS   r   r   r   __classcell__)r   s   @r4   rL   rL      se   JHHLHEL*  U AD%)%7F%	%%)%7F%	% TX)36LP	J 		-#	- $	- 		-
 
	- 6:-#- 3- 
	--B	A		 	4N4N 4N	4N 
4Nl1r=   rL   T)tryfirstc                   t        | t              r/| j                  r#| j                  j                  d      |_        	 |`t        j                  j                  d      }|r||j                  rot        |j                  j                  |j                        rD|j                  t        d    j                  fd|j                        }|j                  |_        y y y y # t        $ r Y w xY w)Nr   r'   c                 @    t        t         j                              S rZ   )r   r   r   )r   s   r4   r\   z+pytest_runtest_makereport.<locals>.<lambda>  s    c'--6H1I r=   )r   rL   r   popr   r   AttributeErrorr*   r+   rM   r   SkipTestr   	from_callr   )r   r   r'   call2r   s       @r4   r   r     s    $()====,,Q/DLK {{z*HDLLZ0B0BHDUDU%V,,(()I499U}} &WLx " s   C 	C+*C+c                .    t        t        | dd            S )zDReturn True if the given object has been marked with @unittest.skip.__unittest_skip__F)r  rB   r9   s    r4   rC   rC     s    0%899r=   c                 l    t               t        j                  urddlm}  ddlm}  |t        |        yy)zRRegister the TestCaseFunction class as an IReporter if twisted.trial is available.r   )	IReporter)classImplementsN)_get_twisted_versionTwistedVersionNotInstalledtwisted.trial.itrialr#  zope.interfacer$  rL   )r#  r$  s     r4   pytest_configurer*    s*    ^%@%@@22()4	 Ar=   c                  :    e Zd ZdZ e       Z e       Z e       Zy)r&  z
    The Twisted version installed in the environment.

    We have different workarounds in place for different versions of Twisted.
    N)r   r   r}   __doc__r   	Version24	Version25r'  r[   r=   r4   r&  r&    s     II6Lr=   r&  c                     dt         j                  vrt        j                  S dd l} dd l}| j                  j                  d      }|j                  j                  |      }|j                  dk  rt        j                  S t        j                  S )NrA   r   twisted   )r*   r+   r&  r'  importlib.metadatapackaging.versionmetadataversionparsemajorr-  r.  )	importlib	packagingversion_strr5  s       r4   r%  r%    sr      s{{2***$$,,Y7K%%k2G}}''''''r=   _twisted_raw_excinfo)wrapperc              #  *  K   t               t        j                  u redd lmc m} |j                  j                  	 dfd	}t        j                         5 }|j                  |j                  d|       d cd d d        S d S # 1 sw Y   y xY ww)Nr   c                   |t        j                         }n+|t        |      }|t        j                         d   }|||f}t        | t        t        |             	  | ||||       y # t        $ r  | |||       Y y w xY w)Nr    )captureVars)r*   r   r   r   TWISTED_RAW_EXCINFO_ATTRr   r   )r;   	exc_valueexc_typeexc_tbr?  raw_exc_infooriginal__init__s         r4   store_raw_exception_infoz9pytest_runtest_protocol.<locals>.store_raw_exception_info4  s      "||~##IH> \\^A.F ()V<D2E,4GHD )Xv;  D y(FCDs   A- -BB__init__)NNNN)r%  r&  r-  twisted.python.failurepythonfailureFailurerG  r   contextr   )r   r3   rF  patcherrE  s       @r4   pytest_runtest_protocolrN  ,  s     !9!99++ ::.. KO	D&   " 	gOOBJJ
4LM	 	 		 	s   AB!B9BBBc                   t               }|t        j                  u r| S |t        j                  u r4t	        | t
              r"t        | t
              }t        | t
               |S | S |t        j                  u rt        | t              ruddl}t        | |j                  j                  j                        rG| j                  }|t!        j"                         d   }t%        | j&                        | j&                  |fS | S J d|        )z
    Twisted passes a custom Failure instance to `addError()` instead of using `sys.exc_info()`.
    Therefore, if `rawexcinfo` is a `Failure` instance, convert it into the equivalent `sys.exc_info()` tuple
    as expected by pytest.
    r   Nr    zUnexpected Twisted version: )r%  r&  r'  r-  hasattrr@  rB   r   r.  r   r   rH  rI  rJ  rK  __traceback__r*   r   r   r   )r   twisted_versionsaved_exc_infor0  tbs        r4   r   r   N  s     +,O.555 	N44	4 :78$Z1IJNJ 89!!	N44	4j-0)*gnn&<&<&D&DE--:*BJ,,-z/?/?CC 	G4_4EFFur=   )r2   zModule | Classr(   r   r)   objectrx   zUnitTestCase | None)r   r   r   zCallInfo[None]rx   ry   )rx   r  rw   )rx   r&  )r   r   rx   zIterator[None])r   z_SysExcInfoType | BaseExceptionrx   r  )Gr,  
__future__r   collections.abcr   r   r   r   enumr   r	   r.   r*   r   typestypingr
   r   r'   r   _pytest._coder   r   _pytest.compatr   r   _pytest.configr   _pytest.fixturesr   _pytest.monkeypatchr   _pytest.nodesr   r   _pytest.outcomesr   r   r   r   _pytest.pythonr   r   r   _pytest.runnerr   r   _pytest.subtestsr   r   r   exceptiongroupr$   r%   twisted.trial.unittestr0  r   r   r   r  r5   r0   rL   r   rC   r*  r&  r%  r@  rN  r   r[   r=   r4   <module>rg     sy   : " $ % $ $    
        ' ' , # + + #  ! ! ! "   # ! # 6 + * BQ'!-#! 
$}
}e.A.A
AB CC%(C/5CC(@
5 @
FO1x O1d 
4% %$:
5T (, 2  
$ B&G/&G&Gr=   