
    =OgX                     j   	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZ ddl	m
Z
mZmZ dZ ej        dej                  Z G d de
j                  Zd	 Zd
 Zd Zd Zd Z G d de          Z e            ZddZej        dfdZdej        ej        fdZdej        ej        fdZ dS )    N)fnmatchfnmatchcase   )casesuiteutilTz[_a-z]\w*\.py$c                   ,     e Zd ZdZ fdZ fdZ xZS )_FailedTestNc                 f    || _         t          t          |                               |           d S N)
_exceptionsuperr
   __init__)selfmethod_name	exception	__class__s      (/usr/lib64/python3.11/unittest/loader.pyr   z_FailedTest.__init__   s.    #k4  ))+66666    c                 z     | j         k    r(t          t                                         |          S  fd}|S )Nc                       j         r   )r   r   s   r   testFailurez,_FailedTest.__getattr__.<locals>.testFailure!   s    /!r   )_testMethodNamer   r
   __getattr__)r   namer   r   s   `  r   r   z_FailedTest.__getattr__   sO    4'''d++77===	" 	" 	" 	" 	"r   )__name__
__module____qualname__r   r   r   __classcell__r   s   @r   r
   r
      sV        O7 7 7 7 7        r   r
   c                 r    d| dt          j                    }t          | t          |          ||          S )NzFailed to import test module: 
)	traceback
format_exc_make_failed_testImportError)r   
suiteClassmessages      r   _make_failed_import_testr*   &   s<     i"$$$&GT;w#7#7WMMMr   c                 R    dt          j                    }t          | |||          S )NzFailed to call load_tests:
)r$   r%   r&   )r   r   r(   r)   s       r   _make_failed_load_testsr,   +   s3     2;2F2H2H2HJGiW. . .r   c                 >    t          | |          } ||f          |fS r   )r
   )
methodnamer   r(   r)   tests        r   r&   r&   0   s(    z9--D:tg''r   c                     t          j        t          |                    d             }| |i}t          dt           j        f|          } | ||           f          S )Nc                     d S r    r   s    r   testSkippedz'_make_skipped_test.<locals>.testSkipped5   s    r   ModuleSkipped)r   skipstrtypeTestCase)r.   r   r(   r3   attrs	TestClasss         r   _make_skipped_testr;   4   si    	Ys9~~  %E_t}&6>>I:yy,,.///r   c                     |                                                      d          r
| d d         S t          j                            |           d         S )Nz	$py.classir   )lowerendswithospathsplitext)r@   s    r   _jython_aware_splitextrB   <   sI    zz||[)) CRCy7D!!!$$r   c                        e Zd Z	 dZ eej                  ZdZe	j
        ZdZ fdZd ZdddZddZddZd	 ZddZd Zd Zd Zd Zd Zd Z xZS )
TestLoaderr/   Nc                     t          t          |                                            g | _        t	                      | _        d S r   )r   rD   r   errorsset_loading_packages)r   r   s    r   r   zTestLoader.__init__M   s:    j$((*** "%r   c                 .   	 t          |t          j                  rt          d          |t          j        t          j        fv rg }n*|                     |          }|st          |d          rdg}| 	                    t          ||                    }|S )NzYTest cases should not be derived from TestSuite. Maybe you meant to derive from TestCase?runTest)
issubclassr   	TestSuite	TypeErrorr   r8   FunctionTestCasegetTestCaseNameshasattrr(   map)r   testCaseClasstestCaseNamesloaded_suites       r   loadTestsFromTestCasez TestLoader.loadTestsFromTestCaseT   s    ImU_55 	) ( ) ) ) T]D,ABBBMM 11-@@M  ,W]I%F%F ,!*s=-'H'HIIr   patternc                   	 t          |          dk    sd|v r0t          j        dt                     |                    dd            t          |          dk    r4t          |          dz   }t          d                    |                    t          |          dk    r7t          |          d         }t          d                    |                    g }t          |          D ]}t          ||          }t          |t                    r\t          |t          j                  rB|t          j        t          j        fvr(|                    |                     |                     t          |dd           }	|                     |          }|	_	  |	| ||          S # t&          $ rD}
t)          |j        |
| j                  \  }}| j                            |           |cY d }
~
S d }
~
ww xY w|S )Nr   use_load_testsz(use_load_tests is deprecated and ignoredr   zCloadTestsFromModule() takes 1 positional argument but {} were givenz=loadTestsFromModule() got an unexpected keyword argument '{}'
load_tests)lenwarningswarnDeprecationWarningpoprM   formatsorteddirgetattr
isinstancer7   rK   r   r8   rN   appendrU   r(   	Exceptionr,   r   rF   )r   modulerW   argskws	complainttestsr   objrZ   e
error_caseerror_messages                r   loadTestsFromModulezTestLoader.loadTestsFromModulef   s   L
 t99q==,33MD,. . .GG$d+++t99q== D		AIahhirssttts88q==
 sAI[bbclmmnnnKK 	> 	>D&$''C3%%>sDM22> t/DEEET77<<===V\488
&&!"!z$w777 " " ",COQ-9 -9)
M""=111!!!!!!!	"
 s   F% %
G3/9G.(G3.G3c           
      x   	 |                     d          }d\  }}||d d          }|r	 d                    |          }t          |          }n^# t          $ rO |                                }t          || j                  \  }}|s| j                            |           |cY S Y nw xY w||dd          }|}	|D ]}
	 |	t          |	|
          }	}# t          $ r}t          |	dd           %|#| j                            |           |cY d }~c S t          |
|| j        dt          j                              \  }}| j                            |           |cY d }~c S d }~ww xY wt          |	t          j                  r|                     |	          S t          |	t$                    rIt'          |	t(          j                  r/|	t(          j        t(          j        fvr|                     |	          S t          |	t          j                  rt          |t$                    rlt'          |t(          j                  rR|d         } ||          }t          t          ||          t          j                  s|                     |g          S nt          |	t2          j                  r|	S t7          |	          rl |	            }t          |t2          j                  r|S t          |t(          j                  r|                     |g          S t9          d|	d|d	          t9          d
|	z            )N.NNr   __path__zFailed to access attribute:
zcalling z
 returned z, not a testz$don't know how to make test from: %s)splitjoin
__import__r'   r_   r*   r(   rF   re   rc   AttributeErrorr&   r$   r%   rd   types
ModuleTyperp   r7   rK   r   r8   rN   rU   FunctionTyper   rL   callablerM   )r   r   rg   partsrn   ro   
parts_copymodule_namenext_attributerl   partparentrm   instr/   s                  r   loadTestsFromNamezTestLoader.loadTestsFromName   s   	 

3$.!
M>qqqJ **"%((:"6"6K'44F" * * *%/^^%5%5N0H&19 19-J% ***=999))))* **  * !""IE 	& 	&D&!73#5#5! & & &CT22>". K&&}555%%%%%%%%% 1Ba%0222516 16-J K&&}555%%%%%%%%%%&( c5+,, 	++C000sD!!	3..	 DM4+@AAA--c222e011 		&&		//		 9D6$<<DgdD1153EFF /v.../U_-- 	JC== 
	J355D$00 -D$-00 -v...i!$ddd!, - - - BSHIIIs=   $A AB)(B)?C
E(.E#
E(A	E#E(#E(c                 P     	  fd|D             }                      |          S )Nc                 <    g | ]}                     |          S r2   )r   ).0r   rg   r   s     r   
<listcomp>z1TestLoader.loadTestsFromNames.<locals>.<listcomp>   s)    III4$((v66IIIr   )r(   )r   namesrg   suitess   ` ` r   loadTestsFromNameszTestLoader.loadTestsFromNames   s:    	 JIIII5IIIv&&&r   c                      	  fd}t          t          |t                                        } j        r-|                    t          j         j                             |S )Nc                     |                      j                  sdS t          |           }t          |          sdS dj        j        | fz  j        d u pt          fdj        D                       S )NFz%s.%s.%sc              3   8   K   | ]}t          |          V  d S r   )r   )r   rW   fullNames     r   	<genexpr>zKTestLoader.getTestCaseNames.<locals>.shouldIncludeMethod.<locals>.<genexpr>   s-      XXwK'22XXXXXXr   )
startswithtestMethodPrefixrc   r}   r   r   testNamePatternsany)attrnametestFuncr   r   rR   s     @r   shouldIncludeMethodz8TestLoader.getTestCaseNames.<locals>.shouldIncludeMethod   s    &&t'<== u}h77HH%% u"(-*Dh& H (D0 YXXXX$BWXXXXXYr   )key)listfilterrb   sortTestMethodsUsingsort	functools
cmp_to_key)r   rR   r   testFnNamess   ``  r   rO   zTestLoader.getTestCaseNames   s    	
	Y 
	Y 
	Y 
	Y 
	Y 
	Y 6"5s=7I7IJJKK$ 	R!5d6O!P!PQQQr   test*.pyc                    	 d}|| j         | j         }n|d}|}t          j                            |          }|t          j        vr t          j                            d|           || _         d}t          j                            t          j                            |                    ret          j                            |          }||k    r>t          j                            t          j                            |d                     }n	 t          |           t          j
        |         }|                    d          d         }	 t          j                            t          j                            |j                            }nD# t          $ r7 |j        t          j        v rt#          d          d t#          d|          d w xY w|r9|                     |          | _         t          j                            |           n# t(          $ r d}Y nw xY w|rt)          d|z            t+          |                     ||                    }|                     |          S )	NFTr   __init__.pyrr   z2Can not use builtin modules as dotted module namesz don't know how to discover from z%Start directory is not importable: %r)_top_level_dirr?   r@   abspathsysinsertisdirisfilerw   rx   modulesrv   dirname__file__ry   r   builtin_module_namesrM    _get_directory_containing_moduleremover'   r   _find_testsr(   )	r   	start_dirrW   top_level_dirset_implicit_topis_not_importable
the_moduletop_partrk   s	            r   discoverzTestLoader.discover   sj   	6 ! T%8%D /MM"#%M66((
 HOOA}---+!7==3344 	3	22IM))(*rw||I}7]7](^(^$^!39%%% ![3
$??3//2( ")<>>!@ !@II% ( ( (!*c.FFF' )A B BGKL (MzMM #'(( $ 3*.*O*OPX*Y*YD'HOOM222)  ) ) )$(!!!),  	SE	QRRRT%%i99::u%%%s    H AF AGH! H!c                    t           j        |         }t          j                            |j                  }t          j                            |                                                              d          r<t          j        	                    t          j        	                    |                    S t          j        	                    |          S )Nr   )
r   r   r?   r@   r   r   basenamer=   r   r   )r   r   rg   	full_paths       r   r   z+TestLoader._get_directory_containing_moduleQ  s    [)GOOFO44	7I&&,,..99-HH 	.7??27??9#=#=>>>
 7??9---r   c                    || j         k    rdS t          t          j                            |                    }t          j                            || j                   }|                    t          j        j        d          }|S Nrr   )r   rB   r?   r@   normpathrelpathreplacesep)r   r@   _relpathr   s       r   _get_name_from_pathzTestLoader._get_name_from_path]  sj    4&&&3%bg&6&6t&<&<==7??4)<== S11r   c                 D    t          |           t          j        |         S r   )rx   r   r   )r   r   s     r   _get_module_from_namez TestLoader._get_module_from_namei  s    4{4  r   c                 "    t          ||          S r   )r   )r   r@   r   rW   s       r   _match_pathzTestLoader._match_pathm  s    tW%%%r   c              #   t  K   	 |                      |          }|dk    r,|| j        vr#|                     ||          \  }}||V  |sd S t          t	          j        |                    }|D ]}t          j                            ||          }|                     ||          \  }}||V  |r|                      |          }| j                            |           	 | 	                    ||          E d {V  | j        
                    |           # | j        
                    |           w xY wd S r   )r   rH   _find_test_pathra   r?   listdirr@   rw   addr   discard)	r   r   rW   r   rk   should_recursepathsr@   r   s	            r   r   zTestLoader._find_testsq  sw     =''	22 3;;4t'=== %)$8$8G$L$L!E> !  rz),,-- 	9 	9DY55I$($8$8G$L$L!E>  9//	::&**40009#//	7CCCCCCCCC*2248888D*22488889	9 	9s   !DD4c                    	 t           j                            |          }t           j                            |          rt                              |          sdS |                     |||          sdS |                     |          }	 |                     |          }t           j        	                    t          |d|                    }t          t           j                            |                    }t          t           j                            |                    }|                                |                                k    rt           j                            |          }	t          t           j                            |                    }
t           j                            |          }d}t          ||
|	|fz            |                     ||          dfS # t"          j        $ r"}t'          ||| j                  dfcY d }~S d }~w t+          || j                  \  }}| j                            |           |dfcY S xY wt           j                            |          rzt           j                            t           j                            |d                    sdS d }d }|                     |          }	 |                     |          }t          |dd           }| j                            |           	 |                     ||          }||df| j                            |           S |df| j                            |           S # | j                            |           w xY w# t"          j        $ r"}t'          ||| j                  dfcY d }~S d }~w t+          || j                  \  }}| j                            |           |dfcY S xY wdS )	N)NFr   zW%r module incorrectly imported from %r. Expected %r. Is this module globally installed?rV   Fr   rZ   T)r?   r@   r   r   VALID_MODULE_NAMEmatchr   r   r   r   rc   rB   realpathr=   r   r'   rp   r   SkipTestr;   r(   r*   rF   re   r   rw   rH   r   r   )r   r   rW   r   r   rg   mod_filer   fullpath_noext
module_dirmod_nameexpected_dirmsgrm   rn   ro   rZ   rk   packages                      r   r   zTestLoader._find_test_path  s    	 7##I..7>>)$$ ?	$**844 #"{##HiAA #"{++I66DP33D99 7??FJ	::< <1G$$X..0 0!7G$$Y//"1 "1>>##~';';'='===!#!:!:J5((33 5  5H#%7??9#=#=LDC%x\BBD D D///HH%OO/ = K K K)$4?CCUJJJJJJJ),T4?CC *
M""=111!5(((($ W]]9%% 	7>>"',,y-"H"HII #"{JE++I66D944T:: %WlDAA
&**40009 44Wg4NNE!-$e| *2248888 !$;*2248888D*2248888% = K K K)$4?CCUJJJJJJJ),T4?CC *
M""=111!5(((( ;sN   G+ +I:HI;IN M& M& &NO.N1+O.1;O.r   )r   N)r   r   r   r   staticmethodr   three_way_cmpr   r   r   rL   r(   r   r   rU   rp   r   r   rO   r   r   r   r   r   r   r   r    r!   s   @r   rD   rD   B   sS        '<(:;;JN' ' ' ' '  $ :> * * * * *XPJ PJ PJ PJd' ' ' '  &Q& Q& Q& Q&f
. 
. 
.
 
 
! ! !& & &9 9 9@H H H H H H Hr   rD   c                 ^    t                      }||_        | |_        ||_        |r||_        |S r   )rD   r   r   r   r(   )prefix	sortUsingr(   r   loaders        r   _makeLoaderr     s8    \\F"+F$F.F '&Mr   c                     dd l } |j        dt          d           t          |||                              |           S )Nr   zunittest.getTestCaseNames() is deprecated and will be removed in Python 3.13. Please use unittest.TestLoader.getTestCaseNames() instead.   
stacklevel)r   )r\   r]   r^   r   rO   )rR   r   r   r   r\   s        r   rO   rO     sX    OOOHM	Eq   
 vy;KLLL]]^klllr   r/   c                     dd l } |j        dt          d           t          |||                              |           S )Nr   zunittest.makeSuite() is deprecated and will be removed in Python 3.13. Please use unittest.TestLoader.loadTestsFromTestCase() instead.r   r   )r\   r]   r^   r   rU   )rR   r   r   r(   r\   s        r   	makeSuiter     sZ    OOOHM	Jq   
 vy*55KK  r   c                     dd l } |j        dt          d           t          |||                              |           S )Nr   zunittest.findTestCases() is deprecated and will be removed in Python 3.13. Please use unittest.TestLoader.loadTestsFromModule() instead.r   r   )r\   r]   r^   r   rp   )rg   r   r   r(   r\   s        r   findTestCasesr     sZ    OOOHM	Hq   
 vy*55II  r   rs   )!r?   rer   r$   rz   r   r\   r   r    r   r   r   
__unittestcompile
IGNORECASEr   r8   r
   r*   r,   r&   r;   rB   objectrD   defaultTestLoaderr   r   rO   rL   r   r   r2   r   r   <module>r      s    				 				 



           ( ( ( ( ( ( ( (          

 BJ0"-@@     $-   N N N
. . .
( ( (0 0 0% % %W W W W W W W Wt JLL     7;6H[_ m m m m %+d6H	 	 	 	 "(43E"_	 	 	 	 	 	r   