
    z%i(                         	 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 e ed             Z e ed             Z G d d	e	      Z G d
 de	      Zedk(  r e        yy)    N)dedent)FunctionType
MethodTypeBuiltinFunctionType)TestCasemain)utilc                       y N r       D/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_pyclbr.py<lambda>r          r   c                      y r   r   )cs    r   r   r      r   r   c                   D    e Zd 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                     	 ||v ry t        ||      st        d|       | j                  t        ||      d|d|d       y )Nz???zexpected hasattr(z, ))hasattrr   
assertTrue)r   objattrr!   s       r   assertHasattrzPyclbrTest.assertHasattr"   s?    @6>6sD!5#5T*694@	Br   c                 t    	 ||v ry ||vrt        d|t        j                         | j                  ||       y )Nz***r   )r   r   r   assertIn)r   r(   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.assertEqualsOrIgnored1   s)    @F?qQ"  /?r   Nc           	      >   	 t        |      t        dg      z  }|t        |t               i dg      }t        j                  |      }d }|j                         D ]  \  }}||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                  |       * g }|j6                  j3                         D ];  }|d d dk(  r |d	d  dk7  r|j5                  d
|z   |z          +|j5                  |       = 	 | j)                  |||       | j                  |j                  |j                         | j9                  |j$                  |j:                  |        d }t=        |      D ]B  }t        ||      }t        |t         t        f      s& |||      s0| j?                  |||       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                 (   | j                   }t        |t              r"t        ||   t              r|j                  | uryt        |t
              sy|j                  }|j                  d      r"|j                  d      sd| j                  |}||k(  S )NF___)	__dict__
isinstancer   ClassMethodType__self__r   __name__
startswithendswith)oclassr(   name	classdictobjnames        r   ismethodz(PyclbrTest.checkModule.<locals>.ismethodE   s{    I#z*"9T?ODLL. \2llG!!$'0@0@0F%+__g>d?"r   rA   zclass=%sr      r7   r8   c                     t        | t              r| j                  |j                  k(  S t        | t              r| j
                  |j                  u S y)NF)r:   type
__module__r=   r   __globals__r9   )itemmodules     r   
defined_inz*PyclbrTest.checkModule.<locals>.defined_in   sA    $%&//99$-''6??::r   ) r   
__import__globalspyclbrreadmodule_exitemsr*   getattrr:   FunctionassertIsInstancer   r   rI   r0   rL   rH   	__bases__r=   superr#   r   r   r   r9   keysappendmethodsr3   rA   dirr.   )r   
moduleNamerL   r!   dictrD   rA   valuepy_itembase
real_basespyclbr_basesactualMethodsmfoundMethodsrM   rK   s                    r   checkModulezPyclbrTest.checkModule6   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JdmmJ
J-2[[ ;%) ")vt!<  ;  ;%%j,G
 !# ))..0 0A!)<a@%,,Q/0  "++- /A!u}234$++CHQJ7$++A.	/	%%lM6J$$W%7%7F..w/?/?/57Q-	`	 K 	:D64(D$$!56dF+%%dD&9		:O K ;
*w.SZZ@(*w.SZZ@s%   'K
K!KA K;!K8;!Lc                 r    | j                  d       | j                  dd       | j                  dd       y )NrP   doctest)TestResults	_SpoofOutDocTestCase_DocTestSuiter!   difflib)Matchrf   r   s    r   	test_easyzPyclbrTest.test_easy   s?    " 	 ,L 	M:6r   c                 ,    | j                  ddg       y )Nztest.pyclbr_inputomrm   rp   rq   s    r   test_decoratorszPyclbrTest.test_decorators   s    ,dV<r   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f1rE      f2   c1C0      F1   
   C1   C2   F3)ry   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   )r0   rX   valuesassertIsparentrH   rA   r   rL   linenor|   ClassrZ   children)parent1	children1parent2	children2obr-   o1o2t1t2comparembr   s             r   r   z'PyclbrTest.test_nested.<locals>.compare   sE    Y^^-y~~/?@&&( 2bii12&&( 2bii12 ~~' :"33B"XrwwBIIr}}T"XrwwBIIr}}T  R(8rxx'$$RZZ<BKKR[[9:r   )rP   r   _create_treerT   _nest_function_nest_classr   )r   rd   pftisourceactualry   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)Randomrm   r!   cgi)logpickle)partialPickleBuffer	sre_parse)dumpgroupspospdb)Union_ModuleTarget_ScriptTargetpydoc)inputoutputzemail.parserztest.test_pyclbr)rf   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   )r=   rI   __qualname__r#   r*   r.   r3   rf   rr   ru   r   r   r   r   r   r   r      s3    4B #
Y:v7=;.zr   r   c                   $    e Zd Zd Zd Zd Zd Zy)ReadmoduleTestsc                 J    t         j                  j                         | _        y r   )rP   _modulescopyrq   s    r   setUpzReadmoduleTests.setUp   s    ,,.r   c                 .    | j                   t        _         y r   )r   rP   rq   s    r   tearDownzReadmoduleTests.tearDown   s    --r   c                 N    | j                  t        t        j                  d       y )Nzasyncio.foo)assertRaisesImportErrorrP   rQ   rq   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   ModuleNotFoundErrorrP   rQ   )r   module_names     r   test_module_has_no_specz'ReadmoduleTests.test_module_has_no_spec  sa    $ ((5 	2""#67 2$$[12	2 	22 2	2 	2s"   A!AA!A	A!!A*N)r=   rI   r   r   r   r   r   r   r   r   r   r      s    /(L2r   r   __main__)r   textwrapr   typesr   r   r   rP   unittestr   r   unittest_maintest.test_importlibr	   r   r   rH   staticmethodStaticMethodTypeclassmethodr;   r   r   r=   r   r   r   <module>r      st   
   ? ?  4 ;  \23 {>23U Up2h 20 zO r   