ó
    ã¾yjp-  ã                   óx   • S r SSKrSSKrSSKrSSKJrJr  SSKJr  Sr	Sr
SrS	rS
 rS rS r " S S\5      r\rg)zUnittest main programé    Né   )ÚloaderÚrunner)ÚinstallHandlerTé   a  Examples:
  %(prog)s test_module               - run tests from test_module
  %(prog)s module.TestClass          - run tests from module.TestClass
  %(prog)s module.Class.test_method  - run specified test method
  %(prog)s path/to/test_file.py      - run tests from test_file.py
aF  Examples:
  %(prog)s                           - run default set of tests
  %(prog)s MyTestSuite               - run suite 'MyTestSuite'
  %(prog)s MyTestCase.testSomething  - run MyTestCase.testSomething
  %(prog)s MyTestCase                - run all 'test*' test methods
                                       in MyTestCase
c                 ób  • [         R                  R                  U 5      (       Ga	  U R                  5       R	                  S5      (       aå  [         R                  R                  U 5      (       a  [         R                  R                  U [         R                  " 5       5      n[         R                  R                  U5      (       d$  UR                  [         R                  5      (       a  U $ Un [         R                  R                  U 5      S S R                  SS5      R                  SS5      $ U $ )Nz.pyéýÿÿÿÚ\Ú.Ú/)ÚosÚpathÚisfileÚlowerÚendswithÚisabsÚrelpathÚgetcwdÚ
startswithÚpardirÚnormpathÚreplace)ÚnameÚrel_paths     Ú$/usr/lib/python3.13/unittest/main.pyÚ_convert_namer      sÈ   € ô
 
‡w�w‡~�~�d×Ò §
¡
£× 5Ñ 5°e× <Ñ <Ü�7‰7�=‰=˜×ÑÜ—w‘w—‘ t¬R¯YªY«[Ó9ˆHÜ�w‰w�}‰}˜X×&Ñ&¨(×*=Ñ*=¼b¿i¹i×*HÑ*HØ�ØˆDô �w‰w×Ñ Ó% c rÐ*×2Ñ2°4¸Ó=×EÑEÀcÈ3ÓOÐOØ€Kó    c                 óD   • U  Vs/ s H  n[        U5      PM     sn$ s  snf ©N)r   )Únamesr   s     r   Ú_convert_namesr!   .   s   € Ù,1Ó2ªE DŒM˜$Ö©EÑ2Ð2ùÒ2s   …c                 ó   • SU ;  a  SU -  n U $ )NÚ*z*%s*© )Úpatterns    r   Ú_convert_select_patternr&   2   s   € Ø�'‹>Ø˜7Ñ"ˆØ€Nr   c                   ó¸   • \ rS rSrSrSrSrS=r=r=r	=r
=rrSrSSSS\R                  SSSSSS4SSS.S	 jjrS
 rS rSS jrS rS rS rS rSS jrS rSrg)ÚTestProgramé8   ztA command-line program that runs a set of tests; this is primarily
for making test modules conveniently executable.
Nr   Ú__main__TF)Ú	tb_localsÚ	durationsc                óB  • [        U[        5      (       aG  [        U5      U l        UR	                  S5      SS   H  n[        U R                  U5      U l        M      OXl        Uc  [        R                  nX`l        X€l	        X�l
        Xpl        X l        XÀl        XÐl        Uc  [        R                  (       d  SU l        OX°l        X l        X@l        XPl        [(        R*                  R-                  US   5      U l        U R1                  U5        U R3                  5         g )Nr   r   Údefaultr   )Ú
isinstanceÚstrÚ
__import__ÚmoduleÚsplitÚgetattrÚsysÚargvÚexitÚfailfastÚ
catchbreakÚ	verbosityÚbufferr+   r,   ÚwarnoptionsÚwarningsÚdefaultTestÚ
testRunnerÚ
testLoaderr   r   ÚbasenameÚprogNameÚ	parseArgsÚrunTests)Úselfr2   r>   r6   r?   r@   r7   r:   r8   r9   r;   r=   r+   r,   Úparts                  r   Ú__init__ÚTestProgram.__init__B   sÜ   € ô
 �fœc×"Ñ"Ü$ VÓ,ˆDŒKØŸ™ SÓ)¨!¨"Ó-�Ü% d§k¡k°4Ó8�–ò .ð !ŒKØ‰<Ü—8‘8ˆDàŒ	Ø ŒØ$ŒØ"ŒØŒØ"ŒØ"ŒØÑ¤C§O§Oð &ˆD�Mð %ŒMØ&ÔØ$ŒØ$ŒÜŸ™×(Ñ(¨¨a©Ó1ˆŒØ�‰�tÔØ�‰�r   c                 óX  • U R                   c\  [        U R                  R                  5       5        [        [        SU R
                  0-  5        U R                  R                  5         g [        U R                  R                  5       5        [        [        SU R
                  0-  5        g )NÚprog)	r2   ÚprintÚ_main_parserÚformat_helpÚMAIN_EXAMPLESrB   Ú_discovery_parserÚ
print_helpÚMODULE_EXAMPLES)rE   ÚargsÚkwargss      r   Ú_print_helpÚTestProgram._print_helpj   sx   € Ø�;‰;ÑÜ�$×#Ñ#×/Ñ/Ó1Ô2Ü”- 6¨4¯=©=Ð"9Ñ9Ô:Ø×"Ñ"×-Ñ-Õ/ä�$×#Ñ#×/Ñ/Ó1Ô2Ü”/ V¨T¯]©]Ð$;Ñ;Õ<r   c                 óÔ  • U R                  5         U R                  c~  [        U5      S:”  a,  US   R                  5       S:X  a  U R	                  USS  5        g U R
                  R                  USS  U 5        U R                  (       d  U R	                  / 5        g OU R
                  R                  USS  U 5        U R                  (       a,  [        U R                  5      U l	        [        S:X  a  S U l        OaU R                  c  S U l	        OL[        U R                  [        5      (       a  U R                  4U l	        O[        U R                  5      U l	        U R                  5         g )Nr   Údiscoveré   r*   )Ú_initArgParsersr2   Úlenr   Ú_do_discoveryrL   Ú
parse_argsÚtestsr!   Ú	testNamesÚ__name__r>   r/   r0   ÚlistÚcreateTests)rE   r6   s     r   rC   ÚTestProgram.parseArgss   s  € Ø×ÑÔØ�;‰;ÑÜ�4‹y˜1‹}  a¡§¡£°JÓ!>Ø×"Ñ" 4¨¨ 8Ô,ØØ×Ñ×(Ñ(¨¨a¨b¨°4Ô8Ø—:—:ð ×"Ñ" 2Ô&Øð	 ð ×Ñ×(Ñ(¨¨a¨b¨°4Ô8à�:�:Ü+¨D¯J©JÓ7ˆDŒNÜ˜:Ó%à"�”øØ×ÑÑ%à!ˆD�NÜ˜×(Ñ(¬#×.Ñ.Ø"×.Ñ.Ð0ˆD�Nä! $×"2Ñ"2Ó3ˆDŒNØ×ÑÕr   c                 óà  • U R                   (       a  U R                   U R                  l         U(       aN  Uc  U R                  OU" 5       nUR                  " U R                  U R                  U R
                  5      U l        g U R                  c+  U R                  R                  U R                  5      U l        g U R                  R                  U R                  U R                  5      U l        g r   )ÚtestNamePatternsr@   rW   Ústartr%   ÚtopÚtestr^   ÚloadTestsFromModuler2   ÚloadTestsFromNames)rE   Úfrom_discoveryÚLoaderr   s       r   ra   ÚTestProgram.createTests�   s™   € Ø× × Ø/3×/DÑ/DˆD�O‰OÔ,ÞØ(.©�T—_’_¹F»HˆFØŸš¨¯
©
°D·L±LÀ$Ç(Á(ÓKˆD�IØ�^‰^Ñ#ØŸ™×;Ñ;¸D¿K¹KÓHˆD�IàŸ™×:Ñ:¸4¿>¹>Ø;?¿;¹;óHˆD�Ir   c                 ó|   • U R                  5       nU R                  U5      U l        U R                  U5      U l        g r   )Ú_getParentArgParserÚ_getMainArgParserrL   Ú_getDiscoveryArgParserrO   )rE   Úparent_parsers     r   rY   ÚTestProgram._initArgParsersœ   s6   € Ø×0Ñ0Ó2ˆØ ×2Ñ2°=ÓAˆÔØ!%×!<Ñ!<¸]Ó!KˆÕr   c           	      ó  • [         R                  " SS9nUR                  SSSSSSS	9  UR                  S
SSSSSS	9  UR                  SSSSS9  UR                  SS[        S SSS9  U R                  c  UR                  SSSSSS9  SU l        U R
                  c  UR                  SSSSSS9  SU l        U R                  c  UR                  S S!S"SS#S9  SU l        U R                  c  UR                  S$S%S&[        S'S(9  / U l        U$ ))NF)Úadd_helpz-vz	--verboser:   Ústore_constrX   zVerbose output)ÚdestÚactionÚconstÚhelpz-qz--quietr   zQuiet outputz--localsr+   Ú
store_truez"Show local variables in tracebacks)rv   rw   ry   z--durationsr,   ÚNz+Show the N slowest test cases (N=0 for all))rv   Útyper.   Úmetavarry   z-fz
--failfastr8   zStop on first fail or errorz-cz--catchr9   z'Catch Ctrl-C and display results so farz-bz--bufferr;   z%Buffer stdout and stderr during testsz-krd   Úappendz.Only run tests which match the given substring)rv   rw   r|   ry   )	ÚargparseÚArgumentParserÚadd_argumentÚintr8   r9   r;   rd   r&   )rE   Úparsers     r   rn   ÚTestProgram._getParentArgParser¡   sr  € Ü×(Ò(°%Ñ8ˆà×Ñ˜D +°KØ#0¸Ø!1ð 	ñ 	3ð 	×Ñ˜D )°+Ø#0¸Ø!/ð 	ñ 	1ð 	×Ñ˜J¨[Ø#/Ø!Eð 	ñ 	Gð 	×Ñ˜M°Ä#Ø$(°#Ø!Nð 	ñ 	Pð �=‰=Ñ Ø×Ñ  l¸Ø'3Ø%Bð  ñ Dð "ˆDŒMØ�?‰?Ñ"Ø×Ñ  i°lØ'3Ø%Nð  ñ Pð $ˆDŒOØ�;‰;ÑØ×Ñ  j°xØ'3Ø%Lð  ñ Nð  ˆDŒKØ× Ñ Ñ(Ø×Ñ Ð+=Ø'/Ô6MØ%Uð  ñ Wð %'ˆDÔ!àˆr   c                 ó–   • [         R                  " U/S9nU R                  Ul        U R                  Ul        UR                  SSSS9  U$ )N©Úparentsr]   r#   z?a list of any number of test modules, classes and test methods.)Únargsry   )r   r€   rB   rJ   rT   rP   r�   )rE   Úparentrƒ   s      r   ro   ÚTestProgram._getMainArgParserÇ   sP   € Ü×(Ò(°&°Ñ:ˆØ—m‘mˆŒØ ×,Ñ,ˆÔà×Ñ˜G¨3ð"8ð 	ñ 	9ð ˆr   c                 ó@  • [         R                  " U/S9nSU R                  -  Ul        SUl        UR                  SSSSS9  UR                  S	S
SSS9  UR                  SSSSS9  S H1  nUR                  US[         R                  [         R                  S9  M3     U$ )Nr†   z%s discoverzcFor test discovery all test modules must be importable from the top level directory of the project.z-sz--start-directoryre   z*Directory to start discovery ('.' default))rv   ry   z-pz	--patternr%   z+Pattern to match tests ('test*.py' default)z-tz--top-level-directoryrf   z<Top level directory of project (defaults to start directory))re   r%   rf   Ú?)rˆ   r.   ry   )r   r€   rB   rJ   Úepilogr�   ÚSUPPRESS)rE   r‰   rƒ   Úargs       r   rp   Ú"TestProgram._getDiscoveryArgParserÒ   sÅ   € Ü×(Ò(°&°Ñ:ˆØ# d§m¡mÑ3ˆŒð$ˆŒð 	×Ñ˜DÐ"5¸GØ!Mð 	ñ 	Oà×Ñ˜D +°IØ!Nð 	ñ 	Pà×Ñ˜DÐ"9Àð"4ð 	ñ 	5ó /ˆCØ×Ñ ¨3Ü(0×(9Ñ(9Ü%-×%6Ñ%6ð  ó 8ñ /ð
 ˆr   c                 óÄ   • SU l         SU l        S U l        Ub8  U R                  c  U R	                  5         U R                  R                  X5        U R                  SUS9  g )Nr   ztest*.pyT)rj   rk   )re   r%   rf   rO   rY   r\   ra   )rE   r6   rk   s      r   r[   ÚTestProgram._do_discoveryç   s\   € ØˆŒ
Ø!ˆŒØˆŒØÑà×%Ñ%Ñ-à×$Ñ$Ô&Ø×"Ñ"×-Ñ-¨dÔ9à×Ñ¨°VÐÒ<r   c           	      óþ  • U R                   (       a
  [        5         U R                  c  [        R                  U l        [        U R                  [        5      (       aS    U R                  U R                  U R                  U R                  U R                  U R                  U R                  S9nOU R                  nUR                  U R                  5      U l        U R"                  (       a¥  U R                   R$                  S:X  a>  ['        U R                   R(                  5      S:X  a  [*        R"                  " [,        5        g U R                   R/                  5       (       a  [*        R"                  " S5        g [*        R"                  " S5        g g ! [         a>    U R                  U R                  U R                  U R                  U R                  S9n GNf = f! [         a    U R                  5       n GN?f = f)N)r:   r8   r;   r=   r+   r,   )r:   r8   r;   r=   r   r   )r9   r   r?   r   ÚTextTestRunnerr/   r|   r:   r8   r;   r=   r+   r,   Ú	TypeErrorÚrunrg   Úresultr7   ÚtestsRunrZ   Úskippedr5   Ú_NO_TESTS_EXITCODEÚwasSuccessful)rE   r?   s     r   rD   ÚTestProgram.runTestsô   sf  € Ø�?�?ÜÔØ�?‰?Ñ"Ü$×3Ñ3ˆDŒOÜ�d—o‘o¤t×,Ñ,ð/ðIØ!%§¡¸4¿>¹>Ø:>¿-¹-Ø8<¿¹Ø:>¿-¹-Ø;?¿>¹>Ø;?¿>¹>ð "1ð "K‘Jð" Ÿ™ˆJØ —n‘n T§Y¡YÓ/ˆŒØ�9�9Ø�{‰{×#Ñ# qÓ(¬S°·±×1DÑ1DÓ-EÈÓ-JÜ—’Ô+Õ,Ø—‘×*Ñ*×,Ñ,Ü—’˜•ä—’˜•ð øô !ó Ià!%§¡¸4¿>¹>Ø:>¿-¹-Ø8<¿¹Ø:>¿-¹-ð "1ð "I“JðIûô ó /à!Ÿ_™_Ó.“
ð/ús,   ÁAF ÆAGÇG ÇGÇG ÇG<Ç;G<)rO   rL   r;   r9   r>   r,   r7   r8   r2   r%   rB   r—   re   r+   rg   r@   rd   r^   r?   rf   r:   r=   )FNr   )r_   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r2   r:   r8   r9   r;   rB   r=   rd   rO   r   ÚdefaultTestLoaderrG   rT   rC   ra   rY   rn   ro   rp   r[   rD   Ú__static_attributes__r$   r   r   r(   r(   8   sœ   † ñð €FØ€IØNRÐR€HÐRˆzÐR˜FÐR XÐR°Ð;KØÐà(°dÀØ#°×0HÑ0HØ¨°TÀdØ¨$ð&ð >CØ"ö	&òP=òô:
HòLò
$òL	òô*=õ!r   r(   )r    r5   r   r   Ú r   r   Úsignalsr   Ú
__unittestrš   rN   rQ   r   r!   r&   Úobjectr(   Úmainr$   r   r   Ú<module>r¨      sU   ðÙ ã 
Û Û 	ç Ý #à€
ØÐ ð€ð€òò 3òô]�&ô ]ð@ �r   