
    7bh(                         	 d dl Z d dlmZ d dlmZmZmZ d dlZd dlm	Z	m
Z d dlmZ d dlZd dlmZ  e ed             Z e ed             Z G d	 d
e	e      Z G d de	      Zedk(  r e        yy)    N)dedent)FunctionType
MethodTypeBuiltinFunctionType)TestCasemain)util)ExtraAssertionsc                       y N r       :/opt/python-3.12.12/usr/lib/python3.12/test/test_pyclbr.py<lambda>r          Tr   c                      y r   r   )cs    r   r   r      r   r   c                   >    e Zd Zd Zd Zd Zd
dZd Zd Zd Z	d	 Z
y)
PyclbrTestc                     	 t        |      t        |      z  t        |      z
  }|rGt        d|d|d|t        j                         | j	                  d|j                         z         y y )Nzl1=z
l2=z
ignore=filez
%r missing)setprintsysstderrfailpop)selfl1l2ignoremissings        r   assertListEqzPyclbrTest.assertListEq   sT    >r7SW$F3r2v>SZZPIIlW[[]23 r   c                 t    	 ||v ry ||vrt        d|t        j                         | j                  ||       y )Nz***r   )r   r   r   assertIn)r   objkeyr"   s       r   assertHaskeyzPyclbrTest.assertHaskey#   s3    8&=&c>%#**-c3r   c                 >    	 ||vr||vr| j                  ||       y y y r   )assertEqual)r   abr"   s       r   assertEqualsOrIgnoredz PyclbrTest.assertEqualsOrIgnored*   s)    @F?qQ"  /?r   Nc           	         	 t        |      t        dg      z  }|t        |t               i dg      }t        j                  |      }d }|j                         D ]b  \  }}||v r| j                  |||       t        ||      }t        |t        j                        rS| j                  |t        t        f       |j                  |k7  rq| j                  |j                  |j                         | j                  |t                |j                  |k7  r|j"                  D 	cg c]  }	|	j$                   }
}	|j&                  D 	cg c]  }	t        |	d|	       }}		 | j)                  |
||       g }|j0                  j3                         D ](  } ||t        ||      |      s|j5                  |       * |j7                  d      x}rlg }|j8                  j3                         D ]L  }|j;                  d      r(|j=                  d      s|j5                  d| |        <|j5                  |       N n#t?        |j8                  j3                               }	 | j)                  |||       | j                  |j                  |j                         | jA                  |j$                  |jB                  |       e d	 }tE        |      D ]B  }t        ||      }t        |t         t        f      s& |||      s0| jG                  |||       D y c c}	w c c}	w #  t+        d|z  t,        j.                          xY w#  t+        d|z  t,        j.                          xY w)
Nobjectz<silly>c                 N   | j                   }t        |t              r"t        ||   t              r|j                  | uryt        |t
              sy|j                  }|j                  d      r5|j                  d      s$| j                  j                  d      x}rd| | }||k(  S )NF___)
__dict__
isinstancer   ClassMethodType__self__r   __name__
startswithendswithlstrip)oclassr'   name	classdictobjnamestripped_typenames         r   ismethodz(PyclbrTest.checkModule.<locals>.ismethod>   s    I#z*"9T?ODLL. \2llG!!$'0@0@0F(.(>(>s(CC$C !"3!4WI>Gd?"r   r=   zclass=%sr   r3   r2   c                     t        | t              r| j                  |j                  k(  S t        | t              r| j
                  |j                  u S y)NF)r5   type
__module__r8   r   __globals__r4   )itemmodules     r   
defined_inz*PyclbrTest.checkModule.<locals>.defined_in   sA    $%&//99$-''6??::r   )$r   
__import__globalspyclbrreadmodule_exitemsassertHasAttrgetattrr5   FunctionassertIsInstancer   r   rD   r+   rG   rC   	__bases__r8   superr$   r   r   r   r4   keysappendr;   methodsr9   r:   listr.   r=   dirr)   )r   
moduleNamerG   r"   dictrA   r=   valuepy_itembase
real_basespyclbr_basesactualMethodsmr@   foundMethodsrH   rF   s                     r   checkModulezPyclbrTest.checkModule/   s   	1
 VsH:.>  
GIrI;GF##J/	#"  ::<KD%v~vtV4fd+G%1%%g>Q/RS%%3  !3!3U\\B%%gt4%%38?8I8IJ8Idmm8I
J-2[[ ;-8T ")vt!<-8   ;%%j,G
 !# ))..0A!)<a@%,,Q/ 1 )-C(88$8#%L"]]//1<<-ajj6F(//!4E3Fqc0JK(//2	 2 $((:(:(<#=L	%%lM6J$$W%7%7F..w/?/?/57Y (h	 KD64(D$$!56dF+%%dD&9	  W K ;
*w.SZZ@0*w.SZZ@s%   'L
L!LA M!M !M$c                 r    | j                  d       | j                  dd       | j                  dd       y )NrK   doctest)TestResults	_SpoofOutDocTestCase_DocTestSuiter"   difflib)Matchrc   r   s    r   	test_easyzPyclbrTest.test_easy   s?    " 	 ,L 	M:6r   c                 .    | j                  dddg       y )Nztest.pyclbr_inputomfrj   rm   rn   s    r   
test_caseszPyclbrTest.test_cases   s    ,dC[Ar   c                     t         dddi d f\  }}}}}t        d      }j                  ||||||      }j                  |d|dd      }j	                  |d	d
d      }	j	                  |	ddd      }
j                  |ddd      }j                  |dd |dd      }j	                  |ddd      }j                  |ddd      }j                  |ddd      }j	                  |ddd      }||d} fd d |d |       y )Ntest ztest.pya          def f0():
            def f1(a,b,c):
                def f2(a=1, b=2, c=3): pass
                return f1(a,b,d)
            class c1: pass
        class C0:
            "Test class."
            def F1():
                "Method."
                return 'return'
            class C1():
                class C2:
                    "Class nested within nested class."
                    def F3(): return 1+1

        f0      )
end_linenof1      f2   c1C0      F1   
   C1   C2   F3)rw   r   c                 R   	 j                  |j                         |j                                |j                         D ]  }j                  |j                  |          |j                         D ]  }j                  |j                  |         |j                         D ]  }||   ||   }}t        |      |j                  |j                  |j                  |j                  |j                  f}t        |      |j                  |j                  |j                  |j                  |j                  f}	j                  ||	       t        |      j                  u r&j                  |j                  |j                          
||j                  ||j                          y r   )r+   rT   valuesassertIsparentrC   r=   r   rG   linenorz   ClassrV   children)parent1	children1parent2	children2obr(   o1o2t1t2comparembr   s             r   r   z'PyclbrTest.test_nested.<locals>.compare   s6    Y^^-y~~/?@&&(bii1 )&&(bii1 ) ~~'"33B"XrwwBIIr}}T"XrwwBIIr}}T  R(8rxx'$$RZZ<BKKR[[9 (r   )rK   r   _create_treerP   _nest_function_nest_classr   )r   ra   prr   tisourceactualrw   r{   r~   r   r   r   r   r   r   expectedr   r   s   `                 @@r   test_nestedzPyclbrTest.test_nested   s2   Ir471aA  " Aq&!Q7 [[D!Q1[5r4A.r4A.^^Ba+XXatQbX9r4B/^^Bb"-^^Bb"-r4R0"%	:0 	fdH-r   c                    | j                   } |dd       t        j                         5  t        j                  dt                |dd       d d d         |dd       t        j                         5  t        j                  dt                |d	d
       d d d         |dd        |dd        |d        |d       y # 1 sw Y   yxY w# 1 sw Y   :xY w)Nrandom)Randomrj   r"   cgi)logpickle)partialPickleBuffer	sre_parse)dumpgroupspospdb)Union_ModuleTarget_ScriptTargetpydoc)inputoutputzemail.parserztest.test_pyclbr)rc   warningscatch_warningssimplefilterDeprecationWarning)r   cms     r   test_otherszPyclbrTest.test_others   s     	8K($$&!!(,>?uX& ' 	878$$&!!(,>?{#<= ' 	>	

 	7/0 	>
! '& '&s   %C6%CCC)Nr   )r8   rD   __qualname__r$   r)   r.   rc   ro   rs   r   r   r   r   r   r   r      s.    4 #
^:@7B;.zr   r   c                   $    e Zd Zd Zd Zd Zd Zy)ReadmoduleTestsc                 J    t         j                  j                         | _        y r   )rK   _modulescopyrn   s    r   setUpzReadmoduleTests.setUp   s    ,,.r   c                 .    | j                   t        _         y r   )r   rK   rn   s    r   tearDownzReadmoduleTests.tearDown   s    --r   c                 N    | j                  t        t        j                  d       y )Nzasyncio.foo)assertRaisesImportErrorrK   rL   rn   s    r   test_dotted_name_not_a_packagez.ReadmoduleTests.test_dotted_name_not_a_package   s    
 	+v';';]Kr   c                     d}t        j                  |      5  | j                  t              5  t	        j
                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ndoesnotexist)test_importlib_utiluncacher   ModuleNotFoundErrorrK   rL   )r   module_names     r   test_module_has_no_specz'ReadmoduleTests.test_module_has_no_spec   sO    $ ((5""#67$$[1 8 6577 65s"   A!AA!A	A!!A*N)r8   rD   r   r   r   r   r   r   r   r   r   r      s    /(L2r   r   __main__)r   textwrapr   typesr   r   r   rK   unittestr   r   unittest_maintest.test_importlibr	   r   r   test.support.testcaser
   rC   staticmethodStaticMethodTypeclassmethodr6   r   r   r8   r   r   r   <module>r      sy   
   ? ?  4 ;  1 \23 {>23S? Sl2h 20 zO r   