
    X-Ph                       d dl m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	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mZ d dlmZmZmZmZmZmZmZmZmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d d	l'm(Z(m)Z) d d
l*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7  G d de	j8                  Z9 G d de	j8                  Z: G d de	j8                  Z; G d de	j8                  Z< G d de3          Z= ed          Z> G d d          Z? G d de?          Z@ G d de	j8                  ZA G d d e	j8                  ZB G d! d"e	j8                  ZC G d# d$e	j8                  ZDd*d)ZEdS )+    )annotationsN)
ModuleType)Any)CompileError)InspectErrorModuleInspect)
ArgSigFunctionSigbuild_signaturefind_unique_signatures!infer_arg_sig_from_anon_docstringinfer_prop_type_from_docstringinfer_sig_from_docstringis_valid_typeparse_all_signaturesparse_signature)Optionscollect_build_targetsgenerate_stubsis_blacklisted_pathis_non_library_modulemypy_optionsparse_options)InspectionStubGeneratorinfer_c_method_args)	ClassInfoFunctionContextcommon_dir_prefixinfer_method_ret_typeremove_misplaced_type_commentswalk_packages)DataDrivenTestCase	DataSuite)assert_equalassert_string_arrays_equallocal_sys_path_setc                      e Zd ZdZ ej        ej        dk    d          dd            Z ej        ej        dk    d          dd            Z	 ej        ej        dk    d          dd            Z
d	d
ddZdd fdZ xZS )StubgenCmdLineSuitezATest cases for processing command-line options and finding files.win32clean up fails on WindowsreturnNonec           
        t          j                    }t          j                    5 }	 t          j        |           t          j        d           |                     dd           |                     dd           t          j        t           j                            dd                     |                     ddd           t          dg          }t          |t          |                    \  }}}t          |g            t          |g            d |D             }t          |t           j                            ddd          t           j                            dd          t           j                            dd          h           t          j        |           n# t          j        |           w xY w	 d d d            d S # 1 swxY w Y   d S )Nsubdira.pyb.pypack__init__.pyc                    h | ]	}|j         
S  )path.0mods     U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/test/teststubgen.py	<setcomp>z7StubgenCmdLineSuite.test_files_found.<locals>.<setcomp>E   s    555c555    )osgetcwdtempfileTemporaryDirectorychdirmkdir	make_filer5   joinr   r   r   r$   selfcurrenttmpoptspy_modspyi_modsc_modsfiless           r9   test_files_foundz$StubgenCmdLineSuite.test_files_found6   s   )++(** 	"c""""x000x000h77888x???$hZ00,A$UYHZHZ,[,[)6Xr***VR(((55W555Xv}EEXv66Xv66   !!!!!!!!!-	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s)   GE(F&G&F<<GGGc           
     R   t          j                    }t          j                    5 }	 t          j        |           t          j        d           |                     ddd           |                     dd           |                     dd           t          ddg          }t          |t          |                    \  }}}t          |g            t          |g            d |D             }t          |t           j                            dd          t           j                            dd          t           j                            dd          h           t          j        |           n# t          j        |           w xY w	 d d d            d S # 1 swxY w Y   d S )	Nr1   r2   zfrom . import a, bcontentr/   r0   z-pc                Z    h | ](}t           j                            |j        pd           )S )FAIL)r<   r5   relpathr6   s     r9   r:   z:StubgenCmdLineSuite.test_packages_found.<locals>.<setcomp>_   s-    PPP);V<<PPPr;   )r<   r=   r>   r?   r@   rA   rB   r   r   r   r$   r5   rC   rD   s           r9   test_packages_foundz'StubgenCmdLineSuite.test_packages_foundQ   s   )++(** 	"c"   v}>RSSSvv...vv...$dF^44,A$UYHZHZ,[,[)6Xr***VR(((PPPPPV];;VV44VV44   !!!!!!!!!+	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s)   FD7E5 F5FFF #F c                d   t          j                    }t          j                    }|t          _        t          j                    5 }	 t          j        |           | 	                    |dd           t          ddg          }t          |t          |                     |                                dk    sJ 	 t          j        t          _        t          j        |           n/# t          j        t          _        t          j        |           w xY w	 d d d            d S # 1 swxY w Y   d S )Nzmymodule.pyzimport arO   -mmymodule )r<   r=   ioStringIOsysstdoutr>   r?   r@   rB   r   r   r   getvalue
__stdout__)rE   rF   captured_outputrG   rH   s        r9   test_module_not_foundz)StubgenCmdLineSuite.test_module_not_foundk   sD   )+++--$
(** 		"c"sM:FFF$dJ%788%dL,>,>???&//11R77777 ^
!!!! !^
!!!!!		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		"s+   D%A4C(=+D%(,DD%%D),D)rX   rO   r5   strrP   c                   t          j        j        | }t          |d          5 }|                    |           d d d            d S # 1 swxY w Y   d S )Nw)r<   r5   rC   openwrite)rE   rP   r5   filefs        r9   rB   zStubgenCmdLineSuite.make_file{   s    w|T"$__ 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAANresult
Any | Nonec                    t                      5  t                                          |          cd d d            S # 1 swxY w Y   d S N)r&   superrun)rE   rh   	__class__s     r9   rm   zStubgenCmdLineSuite.run   s    !! 	' 	'77;;v&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   !>AAr+   r,   )r5   ra   rP   ra   r+   r,   rk   )rh   ri   r+   ri   )__name__
__module____qualname____doc__unittestskipIfr[   platformrM   rT   r`   rB   rm   __classcell__)rn   s   @r9   r(   r(   3   s       KKX_S\W,.IJJ" " " KJ"4 X_S\W,.IJJ" " " KJ"2 X_S\W,.IJJ" " " KJ" 46      
' ' ' ' ' ' ' ' ' ' 'r;   r(   c                      e Zd ZddZdS )StubgenCliParseSuiter+   r,   c           
        t                      5 }t          t          t          |dg                    dh           t          t          t          |ddg                    ddh           t          t          |dg                    }|                     |                    h d                     d d d            d S # 1 swxY w Y   d S )Nmypy.errorsmypy.stubgenmypy>   	mypy.testmypy.test.helpersr}   r{   r|   )r   r$   setr!   
assertTrue
issuperset)rE   mall_mypy_packagess      r9   test_walk_packagesz'StubgenCliParseSuite.test_walk_packages   s   __ 	]1}o>>??-QQQM!m^%DEEFF/  
 !$M!fX$>$> ? ?OO!,,]]]   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B%CCCNro   )rp   rq   rr   r   r4   r;   r9   ry   ry      s(             r;   ry   c                     e Zd ZdZd/dZd/dZd/dZd/dZd/dZd/d	Z	d/d
Z
d/dZd0dZd/dZd/dZd/dZd/dZd/dZd/dZd/dZej                            ed          d/d            Zd/dZd/dZd/dZd/dZd/dZd/d Zd/d!Zd/d"Z d/d#Z!d/d$Z"d/d%Z#d/d&Z$d/d'Z% e&j'        e(j)        d(k    d)          d/d*            Z* e&j'        e(j)        d(k    d+          d/d,            Z+d/d-Z,d.S )1StubgenUtilSuitez)Unit tests for stubgen utility functions.r+   r,   c                8    |                      ddg g f           d S )Nzfunc()funcassert_parse_signaturerE   s    r9   test_parse_signaturez%StubgenUtilSuite.test_parse_signature   s%    ##Hvr2.>?????r;   c                p    |                      dddgg f           |                      ddddgg f           d S )Nz	func(arg)r   argzdo(arg, arg2)doarg2r   r   s    r9   test_parse_signature_with_argsz/StubgenUtilSuite.test_parse_signature_with_args   sH    ##K&5'21FGGG##OdUFOR5PQQQQQr;   c                    |                      ddg dgf           |                      dddgdgf           |                      ddg ddgf           d S )Nzfunc([arg])r   r   zfunc(arg[, arg2])r   zfunc([arg[, arg2]])r   r   s    r9   'test_parse_signature_with_optional_argsz8StubgenUtilSuite.test_parse_signature_with_optional_args   sl    ##MFB3HIII##$7&5'F89TUUU##$9FBPV;XYYYYYr;   c                    |                      ddg dgf           |                      dddgdgf           |                      ddg ddgf           d S )Nzfunc(arg=None)r   r   zfunc(arg, arg2=None)r   zfunc(arg=1, arg2="")r   r   s    r9   %test_parse_signature_with_default_argz6StubgenUtilSuite.test_parse_signature_with_default_arg   sm    ##$4vrE76KLLL##$:VeWvh<WXXX##$:VR%QW<YZZZZZr;   c                :    |                      dddgg f           d S )NzClassName.func(arg)r   r   r   r   s    r9   ,test_parse_signature_with_qualified_functionz=StubgenUtilSuite.test_parse_signature_with_qualified_function   s(    ##$9FUGR;PQQQQQr;   c                >    |                      ddddgdgf           d S )NzClassName.func(arg, *, arg2=1)r   r   *r   r   r   s    r9   %test_parse_signature_with_kw_only_argz6StubgenUtilSuite.test_parse_signature_with_kw_only_arg   s6    ##,vs|fX.N	
 	
 	
 	
 	
r;   c                <    |                      ddddgg f           d S )NzClassName.func(arg, *args)r   r   *argsr   r   s    r9   "test_parse_signature_with_star_argz3StubgenUtilSuite.test_parse_signature_with_star_arg   s-    ##$@6ESZK[]_B`aaaaar;   c                <    |                      ddddgg f           d S )NzClassName.func(arg, **args)r   r   z**argsr   r   s    r9   'test_parse_signature_with_star_star_argz8StubgenUtilSuite.test_parse_signature_with_star_star_arg   s-    ##$AFUT\L]_aCbcccccr;   sigra   rh    tuple[str, list[str], list[str]]c                @    t          t          |          |           d S rk   )r$   r   )rE   r   rh   s      r9   r   z'StubgenUtilSuite.assert_parse_signature   s     _S))622222r;   c                B   t          t          g g           d           t          t          dgg           d           t          t          ddgg           d           t          t          dgdg          d           t          t          dgddg          d           d S )	N()r   (arg)r   (arg, arg2)z(arg, arg2=...)z**xz(arg, arg2=..., **x))r$   r   r   s    r9   test_build_signaturez%StubgenUtilSuite.test_build_signature   s    _R,,d333_eWb117;;;_eV_b99=III_eWvh779JKKK_eWvuo>>@VWWWWWr;   c                L    t          t          g d          ddgg f           d S )N)zrandom textz.. function:: fn(argz.. function:: fn()z  .. method:: fn2(arg))fnr   )fn2r   )r$   r   r   s    r9   test_parse_all_signaturesz*StubgenUtilSuite.test_parse_all_signatures   sJ         ,-r2
	
 
	
 
	
 
	
 
	
r;   c                H    t          t          g d          ddg           d S )N)r   r   r   )func2r   )r   r   func3r   r   r   )r$   r   r   s    r9   test_find_unique_signaturesz,StubgenUtilSuite.test_find_unique_signatures   sE    "    56	
 	
 	
 	
 	
r;   c                
   t          t          dd          t          dt          d          gd          g           t          t          dd          t          dt          d          gd          g           t          t          dd          t          dt          d          t          d	d
          gd          g           t          t          dd          t          dt          d          t          d	d
          gd          g           t          t          dd          t          dt          d          t          d	d
          gd          g           t          t          dd          g            t          t          dd          g            t          t          dd          t          dt          dd
          gd          g           t          t          dd          g            t          t          dd          t          dt          dd          gd          g           t          t          dd          t          dt          ddd
          gd          g           t          t          dd          t          dt          dd d
          gd          g           t          t          dd          t          dg d          g           t          t          dd          t          dt          ddd
          gd          g           t          t          dd          t          dt          ddd
          gd          g           t          t          dd          t          dt          dd          gd          g           t          t          dd          t          dt          dd          t          d d          gd          g           t          t          d!d          t          dt          dd"          gd          g           t          t          d#d          t          dt          dd$d
          gd          g           t          t          d%d          t          dt          ddd
          gd          g           t          t          d&d          g            t          t          d'd          t          dt          dd           gd          g           t          t          d(d          t          dt          ddd
          gd          g           d S ))Nz
func(x) - yr   xnamer   r   argsret_typez
func(x)z
func(x, Y_a=None)Y_aT)r   defaultz
func(x, Y_a=3)z
func(x, Y_a=[1, 2, 3])z
afunc(x) - yz

func(x, yz
func(x=z(y))z
func xz
func(x: int)intr   typez
func(x: int=3)r   r   r   z

func(x=3)z
func() -> intz
func(x: int=3) -> intz
func(x: int=3) -> int   
z 
func(x: Tuple[int, str]) -> strzTuple[int,str]ra   z9
func(x: Tuple[int, Tuple[str, int], str], y: int) -> strTuple[int,Tuple[str,int],str]yz
func(x: foo.bar)foo.barz
func(x: list=[1,2,[3,4]])listz
func(x: str="nasty[")z
func[(x: foo.bar, invalid]z&
func(x: invalid::type<with_template>)z
func(x: str="")r$   r   r
   r	   r   s    r9   test_infer_sig_from_docstringz.StubgenUtilSuite.test_infer_sig_from_docstring   sy   $_f==fF,<,<,<+=NNNO	
 	
 	
 	$[&99fF,<,<,<+=NNNO	
 	
 	

 	$%:FCC c***Ft,L,L,LM"  		
 		
 		
 	$%7@@ c***Ft,L,L,LM"  		
 		
 		
 	$%?HH c***Ft,L,L,LM"  		
 		
 		
 	-.>GGLLL-mVDDbIII$%5v>>fFT,J,J,J+KV[\\\]	
 	
 	

 	-j&AA2FFF$%5v>>fF%,H,H,H+ITYZZZ[	
 	
 	
 	$%7@@v3UD'Q'Q'Q&R]b  	
 	
 	
 	$]F;;v3T4'P'P'P&Q\a  	
 	
 	
 	$%6??f2>>>?	
 	
 	

 	$%>GGv3UD'Q'Q'Q&R]b  	
 	
 	
 	$%CVLLv3UD'Q'Q'Q&R]b  	
 	
 	
 	$%H&QQv3=M'N'N'N&OZ_  	
 	
 	
 	$Lf  C.MNNNCe444 #  			
 	
 	
  	$%96BBfF),L,L,L+MX]^^^_	
 	
 	

 	$%BFKKv3VT'R'R'R&S^c  	
 	
 	
 	$%>GGv3UD'Q'Q'Q&R]b  	
 	
 	
 	-.LfUUWYZZZ$%NPVWWfF$,G,G,G+HSXYYYZ	
 	
 	

 	$%8&AAv3UD'Q'Q'Q&R]b  	
 	
 	
 	
 	
r;   c           
         t          t          dd          t          dt          d          t          d          gd          g           d S )Nz$
func(x, x) -> str
func(x, y) -> intr   r   r   r   r   r   r   r   s    r9   ,test_infer_sig_from_docstring_duplicate_argsz=StubgenUtilSuite.test_infer_sig_from_docstring_duplicate_args  s]    $%MvVVfF,<,<,<f#>N>N>N+OZ_```a	
 	
 	
 	
 	
r;   c                B    t          t          dd          d            d S )Nz:
            x
              x
             x
            r   r$   r   r   s    r9   -test_infer_sig_from_docstring_bad_indentationz>StubgenUtilSuite.test_infer_sig_from_docstring_bad_indentation  s:    $
   
	
 
	
 
	
 
	
 
	
r;   c           
        t          t          dd          t          dt          d          t          d          gd          g           t          t          dd          t          dt          d          gd          g           t          t          d	d          t          dt          d          gd          g           d S )
Nzfunc(*args, **kwargs) -> intr   r   r   **kwargsr   r   zfunc(*args) -> intzfunc(**kwargs) -> intr   r   s    r9   )test_infer_sig_from_docstring_args_kwargsz:StubgenUtilSuite.test_infer_sig_from_docstring_args_kwargs  s    $%CVLL g...J0G0G0GH"  		
 		
 		
 	$%96BBfF,@,@,@+AERRRS	
 	
 	

 	$%<fEEfF
,C,C,C+DuUUUV	
 	
 	
 	
 	
r;   z6Arg and kwarg signature validation not implemented yet)raisesreasonc                    t          t          dd          g            t          t          dd          g            t          t          dd          g            d S )Nzfunc(*args, *args2) -> intr   zfunc(**kw, **kw2) -> intzfunc(**kwargs, *args) -> intr   r   s    r9   0test_infer_sig_from_docstring_args_kwargs_errorszAStubgenUtilSuite.test_infer_sig_from_docstring_args_kwargs_errors  se    
 	-.JFSSUWXXX 	-.H&QQSUVVV 	-.LfUUWYZZZZZr;   c                   t          t          dd          t          dt          d          gd          g           t          t          dd          t          dt          d          t          d          gd          g           t          t          d	d          t          dt          d          t          d
          gd          g           t          t          dd          t          dt          d          t          d          gd          g           t          t          dd          t          dt          d          t          d          t          d          gd          g           d S )Nzfunc(self, /) -> strr   rE   r   ra   r   zfunc(self, x, /) -> strr   zfunc(x, /, y) -> intr   r   zfunc(x, /, *args) -> strr   z&func(x, /, *, kwonly, **kwargs) -> strkwonlyr   r   r   s    r9   7test_infer_sig_from_docstring_positional_only_argumentszHStubgenUtilSuite.test_infer_sig_from_docstring_positional_only_arguments  s   $%;VDDfF,?,?,?+@5QQQR	
 	
 	

 	$%>GGv6':':':F<L<L<L&MX]  	
 	
 	
 	$%;VDDfF,<,<,<f#>N>N>N+OZ_```a	
 	
 	

 	$%?HHv3'7'7'7W9M9M9M&NY^  	
 	
 	
 	$%MvVV c***F,A,A,A6zCZCZCZ["  		
 		
 		
 		
 		
r;   c                l   t          t          dd          t          dt          d          gd          g           t          t          dd          t          dt          d          t          d          gd          g           t          t          d	d          t          dt          d          t          d          gd          g           t          t          d
d          t          dt          d          t          d          t          d          gd          g           d S )Nzfunc(*, x) -> strr   r   r   ra   r   zfunc(x, *, y) -> strr   zfunc(*, x, y) -> strz#func(x, *, kwonly, **kwargs) -> strr   r   r   r   s    r9   4test_infer_sig_from_docstring_keyword_only_argumentszEStubgenUtilSuite.test_infer_sig_from_docstring_keyword_only_arguments  s\   $%8&AAfF,<,<,<+=NNNO	
 	
 	

 	$%;VDDfF,<,<,<f#>N>N>N+OZ_```a	
 	
 	

 	$%;VDDfF,<,<,<f#>N>N>N+OZ_```a	
 	
 	

 	$%JFSS c***F,A,A,A6*CUCUV"  		
 		
 		
 		
 		
r;   c                ,   t          t          dd          t          dt          d          t          d          gd          g           t          t          dd          t          dt          d          t          d          t          d	          gd          g           t          t          d
d          t          dt          d          t          d          t          d	          t          d          gd          g           d S )Nzfunc(x, /, *, y) -> strr   r   r   r   ra   r   zfunc(x,  /, y,  *, z) -> strzz&func(x,  /, y,  *, z, **kwargs) -> strr   r   r   s    r9   Atest_infer_sig_from_docstring_pos_only_and_keyword_only_argumentszRStubgenUtilSuite.test_infer_sig_from_docstring_pos_only_and_keyword_only_arguments  sB   $%>GGfF,<,<,<f#>N>N>N+OZ_```a	
 	
 	

 	$%CVLL c***F,<,<,<f#>N>N>NO"  		
 		
 		
 	$%MvVVC(((C(((C(((z**	 #	 	 		
 	
 	
 	
 	
r;   c                   t          t          dd          g            t          t          dd          g            t          t          dd          g            t          t          dd          g            t          t          dd          g            t          t          dd          g            t          t          dd          g            t          t          d	d          g            d S )
Nzfunc(/, x) -> strr   zfunc(x, *) -> strzfunc(x, *, /,  y) -> strzfunc(x, /, /, *,  y) -> strzfunc(x, /, y,  /, *,  z) -> strzfunc(x, /, *, *,  y) -> strzfunc(x, /, *, y, *,  z) -> strzfunc(*args, *, kwonly) -> strr   r   s    r9   Htest_infer_sig_from_docstring_pos_only_and_keyword_only_arguments_errorszYStubgenUtilSuite.test_infer_sig_from_docstring_pos_only_and_keyword_only_arguments_errors  s    -.A6JJBOOO 	-.A6JJBOOO 	-.H&QQSUVVV 	-.KVTTVXYYY-.OQWXXZ\]]] 	-.KVTTVXYYY-.NPVWWY[\\\ 	-.MvVVXZ[[[[[r;   c           	         t          t          d          t          d          t          d          g           t          t          d          t          ddd	          t          d
dd	          g           d S )Nz(*args, **kwargs)r   r   r   zB(x: Tuple[int, Tuple[str, int], str]=(1, ('a', 2), 'y'), y: int=4)r   r   Tr   r   r   )r$   r   r	   r   s    r9   &test_infer_arg_sig_from_anon_docstringz7StubgenUtilSuite.test_infer_arg_sig_from_anon_docstring0  s    -.ABB!!!6z#:#:#:;	
 	
 	

 	-T  C&EtTTTCeT:::		
 	
 	
 	
 	
r;   c                    t          t          d          d           t          t          d          d           t          t          d          d           t          t          d          d            d S )Nzstr: A string.ra   zOptional[int]: An int.zOptional[int]zTuple[int, int]: A tuple.zTuple[int, int]z
str: A string.)r$   r   r   s    r9   #test_infer_prop_type_from_docstringz4StubgenUtilSuite.test_infer_prop_type_from_docstring@  sy    34DEEuMMM34LMM___*+FGGIZ	
 	
 	
 	34FGGNNNNNr;   c                2    t          dd          g k    sJ d S )Nz*fetch_row([maxrows, how]) -- Fetches stuff	fetch_row)r   r   s    r9   -test_infer_sig_from_docstring_square_bracketsz>StubgenUtilSuite.test_infer_sig_from_docstring_square_bracketsH  s2    $%QS^__     r;   c                D    d}t          t          |          |           d S )Nu   
        ሴ
        def f(x):  # type: (int) -> int

        def g(x):
            # type: (int) -> int

        def h():

            # type: () int

        x = 1  # type: int
        r$   r    )rE   goods     r9   %test_remove_misplaced_type_comments_1z6StubgenUtilSuite.test_remove_misplaced_type_comments_1N  s*     	3D994@@@@@r;   c                H    d}d}t          t          |          |           d S )Nz
        def f(x):
            # type: Callable[[int], int]
            pass

        #  type:  "foo"
        #  type:  'bar'
        x = 1
        # type: int
        z?
        def f(x):

            pass



        x = 1

        r   rE   bad	bad_fixeds      r9   %test_remove_misplaced_type_comments_2z6StubgenUtilSuite.test_remove_misplaced_type_comments_2_  1    			 	3C88)DDDDDr;   c                H    d}d}t          t          |          |           d S )Nz
        def f(x):
            """docstring"""
            # type: (int) -> int
            pass

        def g(x):
            """docstring
            """
            # type: (int) -> int
            pass
        z
        def f(x):
            """docstring"""

            pass

        def g(x):
            """docstring
            """

            pass
        r   r   s      r9   %test_remove_misplaced_type_comments_3z6StubgenUtilSuite.test_remove_misplaced_type_comments_3v  1    	 	3C88)DDDDDr;   c                H    d}d}t          t          |          |           d S )Nz
        def f(x):
            '''docstring'''
            # type: (int) -> int
            pass

        def g(x):
            '''docstring
            '''
            # type: (int) -> int
            pass
        z
        def f(x):
            '''docstring'''

            pass

        def g(x):
            '''docstring
            '''

            pass
        r   r   s      r9   %test_remove_misplaced_type_comments_4z6StubgenUtilSuite.test_remove_misplaced_type_comments_4  r   r;   c                H    d}d}t          t          |          |           d S )Nz
        def f(x):
            # type: (int, List[Any],
            #        float, bool) -> int
            pass

        def g(x):
            # type: (int, List[Any])
            pass
        z{
        def f(x):

            #        float, bool) -> int
            pass

        def g(x):

            pass
        r   r   s      r9   %test_remove_misplaced_type_comments_5z6StubgenUtilSuite.test_remove_misplaced_type_comments_5  r   r;   c                H    d}d}t          t          |          |           d S )Ns   
        
        def f(x):  # type: (int) -> int

        def g(x):
            # type: (int) -> int
            pass

        def h():
            # type: int
            pass

        x = 1  # type: int
        s   
        
        def f(x):  # type: (int) -> int

        def g(x):
            # type: (int) -> int
            pass

        def h():

            pass

        x = 1  # type: int
        r   )rE   originaldests      r9   )test_remove_misplaced_type_comments_bytesz:StubgenUtilSuite.test_remove_misplaced_type_comments_bytes  s1     	3H==tDDDDDr;   r)   z0Tests building the paths common ancestor on *nixc                N   t          g           dk    sJ t          dg          dk    sJ t          dg          dk    sJ t          dg          dk    sJ t          ddg          dk    sJ t          ddg          dk    sJ t          d	dg          dk    sJ t          d
dg          dk    sJ t          d	dg          dk    sJ t          d
dg          dk    sJ t          ddg          dk    sJ t          dg          dk    sJ t          dg          dk    sJ d S )N.x.pyiz./x.pyifoo/bar/x.pyizfoo/barzfoo/bar/y.pyiz	foo/y.pyifooz	foo/x.pyizfoo/bar/zar/x.pyizfoo/bar/zar/y.pyifoo/bar\x.pyifoo\bar/x.pyifoo\barr   r   s    r9   test_common_dir_prefix_unixz,StubgenUtilSuite.test_common_dir_prefix_unix  s    $$++++ '++s2222 )--4444 /!233y@@@@ /?!CDD	QQQQ /;!?@@EIIII +!?@@EIIII "5{!CDDMMMM +/B!CDDMMMM "5!GHHIUUUU /3F!GHHIUUUU "2!344==== "2!344
BBBBBBr;   z3Tests building the paths common ancestor on Windowsc                P   t          dg          dk    sJ t          dg          dk    sJ t          dg          dk    sJ t          ddg          dk    sJ t          ddg          dk    sJ t          d	dg          dk    sJ t          d
dg          dk    sJ t          d	dg          dk    sJ t          d
dg          dk    sJ t          ddg          dk    sJ t          dg          dk    sJ t          dg          dk    sJ t          dg          dk    sJ d S )Nr   r   z.\x.pyizfoo\bar\x.pyir   zfoo\bar\y.pyiz	foo\y.pyir   z	foo\x.pyizfoo\bar\zar\x.pyizfoo\bar\zar\y.pyir   r   r   r   r   s    r9   test_common_dir_prefix_winz+StubgenUtilSuite.test_common_dir_prefix_win  s    !'++s2222 *..#5555 "2!344
BBBB "24D!EFF*TTTT "2L!ABBeKKKK ,0@!ABBeKKKK "6!EFF%OOOO ,0D!EFF%OOOO "68H!IJJjXXXX "24H!IJJjXXXX "2!344
BBBB "2!344
BBBB "2!344
BBBBBBr;   c                    t          ddt          ddt          dd                              }|j        d	k    sJ d S )
Nspangler   NestedrE   Parent)r   self_var)r   r  parent)module_namer   
class_infozspangle.Parent.Nested.foo)r   r   fullname)rE   ctxs     r9   $test_function_context_nested_classesz5StubgenUtilSuite.test_function_context_nested_classes  s_    ! yhY_7`7`7`  
 
 
 |:::::::r;   Nro   )r   ra   rh   r   r+   r,   )-rp   rq   rr   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pytestmarkxfailAssertionErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   ru   r[   rv   r  r  r  r4   r;   r9   r   r      s|       33@ @ @ @R R R RZ Z Z Z
[ [ [ [
R R R R
 
 
 

b b b bd d d d3 3 3 3X X X X
 
 
 

 
 
 
_
 _
 _
 _
B
 
 
 

 
 
 

 
 
 
, [&^   [ [ [ [&
 &
 &
 &
P
 
 
 
6
 
 
 
B\ \ \ \.
 
 
 
 O O O O
 
 
 
A A A A"E E E E.E E E E6E E E E6E E E E.E E E EB X_S\W,.`aaC C C baC X_!V C C C C; ; ; ; ; ;r;   r   c                      e Zd ZddZddZdS )StubgenHelpersSuiter+   r,   c                   t          d          rJ t          d          rJ t          d          rJ t          d          rJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ d S )	Nz
foo/bar.pyzfoo.pyzfoo/xvendor/bar.pyzfoo/vendorx/bar.pyzfoo/vendor/bar.pyzfoo/vendored/bar.pyzfoo/vendored/bar/thing.pyz
foo/six.py)r   r   s    r9   test_is_blacklisted_pathz,StubgenHelpersSuite.test_is_blacklisted_path  s    &|44444&x00000&';<<<<<&';<<<<<"#677777"#899999"#>?????"<0000000r;   c                   t          d          rJ t          d          rJ t          d          rJ t          d          rJ t          d          rJ t          d          sJ t          d          sJ t          d          sJ t          d	          sJ t          d
          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ d S )Nr   r   zfoo.bartestzfoo.bartestszfoo.testbarzfoo.testzfoo.test.fooz	foo.testszfoo.tests.foozfoo.testing.foozfoo.SelfTest.foozfoo.test_barzfoo.bar_testszfoo.testingzfoo.conftestzfoo.bar_test_utilzfoo.bar_test_utilszfoo.bar_test_basez	foo.setupzfoo.__main__)r   r   s    r9   test_is_non_library_modulez.StubgenHelpersSuite.test_is_non_library_module  s   (/////(33333 )77777(88888(77777$Z00000$^44444$[11111$_55555$%677777$%788888$^44444$_55555$]33333$^44444$%899999$%9:::::$%899999$[11111$^4444444r;   Nro   )rp   rq   rr   r  r  r4   r;   r9   r  r    s<        1 1 1 15 5 5 5 5 5r;   r  c                      e Zd ZdZdZdZdgZ ej        e	j
        dk    d          dd            ZddZddZddZddZdS )StubgenPythonSuitea'  Data-driven end-to-end test cases that generate stub files.

    You can use these magic test case name suffixes:

    *_semanal
        Run semantic analysis (slow as this uses real stubs -- only use
        when necessary)
    *_import
        Import module and perform runtime introspection (in the current
        process!)

    You can use these magic comments:

    # flags: --some-stubgen-option ...
        Specify custom stubgen options

    # modules: module1 module2 ...
        Specify which modules to output (by default only 'main')
    Tr   zstubgen.testr)   r*   testcaser"   r+   r,   c                ~    t                      5  |                     |           d d d            d S # 1 swxY w Y   d S rk   )r&   run_case_inner)rE   r  s     r9   run_casezStubgenPythonSuite.run_caseS  s    !! 	* 	*)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   266c           	     T   g }g }d                     |j                  }|j        d|fgz   D ]\  }}|dd                             dd          }|                    d          r|                    d          \  }}}|                    |           d|vr|                    d	|g           t          |d
          5 }	|		                    |           d d d            n# 1 swxY w Y   | 
                    ||          }
t          j        |
j        k     rt          j                     |                     |          }d}	 	 |j                            d          rd|
_        nB|j                            d          sd|
_        |j                            d          sd|
_        t+          |
           g }|D ];}t-          ||          }|                     ||t1          |          dk               <n# t2          $ r}|j        }Y d }~nd }~ww xY wt7          |j        |d|j         d|j         d           |D ]}|t          j        v rt          j        |= tA          j!        |           d S # |D ]}|t          j        v rt          j        |= tA          j!        |           w xY w)N
z	./main.py   /r   z	.__init__z-p rV   rc   out_inspectT_import_semanal   )headerzInvalid output (z, line ))"rC   inputrL   replaceendswith
rpartitionappendextendrd   re   parse_flagsr[   version_info	pyversionr  skipparse_modulesr   inspect	no_import
parse_onlyr   module_to_pathadd_filelenr   messagesr%   outputrf   linemodulesshutilrmtree)rE   r  extramodssourcerf   rP   r8   _rg   optionsr?  out_diramodulefnames                    r9   r  z!StubgenPythonSuite.run_case_innerX  s(   8>**%^V/D.EE 		! 		!MD'qt*$$S#..C||K(( 0NN3//	QKKF""dC[)))dC !A   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ""6511g///KMMM$$V,,	#=))*55 2&*GOO#=11)<< 1,0)#=11*== 2-1*w'''!% D DF)'6::DMM$#g,,2BMCCCCD     J&$]x}$]$]X]$]$]$]    ) )#+%%C(M'"""""  ) )#+%%C(M'""""sC   =CC#	&C#	B3G6 5I1 6
H HI1 H*I1 16J'program_textra   rB  	list[str]r   c                    t          j        d|t           j                  }d }|rs|                    d                                          }t          |          D ];\  }}|                    d          r!|                    dd          d         }||=  n<ng }t          ||z             }|r<|                    dd          \  }	}
t          |	          t          |
          f|_	        d|vrd|_
        nd|_        |S )	Nz# flags: (.*)$flagsr(  z--python-version==r   z	--verboseT)research	MULTILINEgroupsplit	enumerate
startswithr   r   r3  quietverbose)rE   rL  rB  rP  r3  	flag_listiflagrF  majorminors              r9   r1  zStubgenPythonSuite.parse_flags  s   	*LMMM	 	A,,..I$Y//  4??#677  $

3 2 21 5I!!E
 I	E 122 	9 %??322LE5!$USZZ 8Gi'' GMM"GOr;   c                    t          j        d|t           j                  }|r'|                    d                                          S dgS )Nz# modules: (.*)$rO  r(  main)rR  rS  rT  rU  rV  )rE   rL  r?  s      r9   r5  z StubgenPythonSuite.parse_modules  sH    ).BLQQQ 	==##))+++8Or;   r5   rh   r)  boolc                   t           j                            |          s.|                    d|                    dd          z             d S |r |                    d|dd                      t          |d          5 }|                    |                                                                           d d d            d S # 1 swxY w Y   d S )Nz<%s was not generated>\r#  z#    utf8)encoding)	r<   r5   existsr/  r,  rd   r0  read
splitlines)rE   r5   rh   r)  rf   s        r9   r:  zStubgenPythonSuite.add_file  s   w~~d## 	MM2T\\$5L5LLMMMF 	+MM/tABBx//***$((( 	4DMM$))++0022333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   :CCCN)r  r"   r+   r,   )rL  ra   rB  rM  r+   r   )rL  ra   r+   rM  )r5   ra   rh   rM  r)  rb  r+   r,   )rp   rq   rr   rs   required_out_section	base_pathrL   rt   ru   r[   rv   r  r  r1  r5  r:  r4   r;   r9   r  r  :  s         (  IEX_S\W,.IJJ* * * KJ*,# ,# ,# ,#\   0   4 4 4 4 4 4r;   r  rE   r   c                      e Zd ZdS )TestBaseClassNrp   rq   rr   r4   r;   r9   rn  rn            Dr;   rn  c                      e Zd ZdS )	TestClassNro  r4   r;   r9   rr  rr    rp  r;   rr  c                  :   e Zd ZdZd*dZd*dZd*dZd*dZd*dZd*d	Z	d*d
Z
d*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*dZd*d Z d*d!Z!d*d"Z"d*d#Z#d*d$Z$d*d%Z%d*d&Z&d*d'Z'd*d(Z(d)S )+StubgencSuitezoUnit tests for stub generation from C modules using introspection.

    Note that these don't cover a lot!
    r+   r,   c                    t          t          d          t          g           t          t          d          d           d S )N__hash__r   )r$   r   self_argr   r   s    r9   test_infer_hash_sigz!StubgencSuite.test_infer_hash_sig  s<    (44xjAAA*:66>>>>>r;   c                j    t          t          d          t          t          d          g           d S )N__getitem__indexr   r$   r   rw  r	   r   s    r9   test_infer_getitem_sigz$StubgencSuite.test_infer_getitem_sig  s2    (77(FPWDXDXDX9YZZZZZr;   c                    t          t          d          t          t          d          t          d          g           t          t	          d          d           d S )N__setitem__r{  r   objectr,   )r$   r   rw  r	   r   r   s    r9   test_infer_setitem_sigz$StubgencSuite.test_infer_setitem_sig  s`    ..v7+++V-B-B-BC	
 	
 	
 	*=996BBBBBr;   c           	     ~    dD ]9}t          t          d| d          t          t          dd          g           :d S )N)eqneltlegtge__otherr  r   r|  rE   ops     r9   test_infer_eq_op_sigz"StubgencSuite.test_infer_eq_op_sig  sZ    6 	 	B#KKKK008VW_=`=`=`2a   	 	r;   c                |    dD ]8}t          t          d| d          t          t          d          g           9d S )N)addraddsubrsubmulrmulr  r  r   r|  r  s     r9   test_infer_binary_op_sigz&StubgencSuite.test_infer_binary_op_sig  sT    ? 	] 	]B,["[[[99HfRYFZFZFZ;[\\\\	] 	]r;   c                R    dD ]#}t          t          d| d          d           $d S )N)r  r  r  r  r  r  containsr  rb  r$   r   r  s     r9   test_infer_equality_op_sigz(StubgencSuite.test_infer_equality_op_sig  sC    B 	E 	EB.{B{{{;;VDDDD	E 	Er;   c                ^    dD ])}t          t          d| d          t          g           *d S )N)negposr  )r$   r   rw  r  s     r9   test_infer_unary_op_sigz%StubgencSuite.test_infer_unary_op_sig  sE      	G 	GB,["[[[99H:FFFF	G 	Gr;   c                R    dD ]#}t          t          d| d          |           $d S )N)floatrb  bytesr   r  r  r  s     r9   test_infer_cast_sigz!StubgencSuite.test_infer_cast_sig  sC    3 	A 	AB.{B{{{;;R@@@@	A 	Ar;   c                0   g }t          dd          }t          |j        |j        g|          }|                    dt          |           t          |                                                                g            t          |d         d           d S )NrI  rX   known_modulesrI  aliasr   zclass alias:)r   r   rp   generate_class_stubr  r$   get_importsrj  rE   r=  r8   gens       r9   ,test_generate_class_stub_no_crash_for_objectz:StubgencSuite.test_generate_class_stub_no_crash_for_object  s    2&&%cl3<.Y\]]]888S__&&1133R888VAY/////r;   c                :    G d d          }g }t          dd          }t          |j        |j        g|          }|                    d||           t	          |                                                                dg           t	          |dd	g           d S )
Nc                      e Zd ZdZdS )]StubgencSuite.test_generate_class_stub_variable_type_annotation.<locals>.TestClassVariableClsr(  N)rp   rq   rr   r   r4   r;   r9   TestClassVariableClsr    s        AAAr;   r  rI  rX   r  Czfrom typing import ClassVarzclass C:z    x: ClassVar[int] = ...)r   r   rp   r  r$   r  rj  )rE   r  r=  r8   r  s        r9   1test_generate_class_stub_variable_type_annotationz?StubgencSuite.test_generate_class_stub_variable_type_annotation  s    	 	 	 	 	 	 	 	 2&&%cl3<.Y\]]]%96BBBS__&&11336S5TUUUVj*FGHHHHHr;   c                4    G d d          }g }t          |j        d          }t          |j        |j        g|          }d|_        |                    d|j        |t          d|dt          |dd           	          
           t          |dg           d S )Nc                      e Zd ZdddZdS )BStubgencSuite.test_generate_c_type_none_default.<locals>.TestClassr(  Nr+   r,   c                    d S rk   r4   )rE   arg0arg1s      r9   testzGStubgencSuite.test_generate_c_type_none_default.<locals>.TestClass.test      r;   )r(  Nro   rp   rq   rr   r  r4   r;   r9   rr  r    s-              r;   rr  rX   r  Fr  rE   rs   r  clsr   	docstringr=  r  zKdef test(self, arg0: int = ..., arg1: Incomplete | None = ...) -> None: ...
r   rq   r   rp   is_c_modulegenerate_function_stubr  r   getattrr$   rE   rr  r=  r8   r  s        r9   !test_generate_c_type_none_defaultz/StubgencSuite.test_generate_c_type_none_default  s    	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N  !)Y==	  	 	# 
	
 
	
 
	
 	bc	
 	
 	
 	
 	
r;   c                4    G d d          }g }t          |j        d          }t          |j        |j        g|          }d|_        |                    d|j        |t          d|dt          |dd           	          
           t          |dg           d S )Nc                      e Zd Zdddd
ZdS )PStubgencSuite.test_non_c_generate_signature_with_kw_only_args.<locals>.TestClass   )keyword_only_with_defaultr  ra   keyword_onlyr  r   r+   r,   c                   d S rk   r4   )rE   r  r  r  s       r9   r  zUStubgencSuite.test_non_c_generate_signature_with_kw_only_args.<locals>.TestClass.test  s	     r;   N)r  ra   r  ra   r  r   r+   r,   r  r4   r;   r9   rr  r    s5        XY       r;   rr  rX   r  Fr  rE   rs   r  r  zbdef test(self, arg0: str, *, keyword_only: str, keyword_only_with_default: int = ...) -> None: ...r  r  s        r9   /test_non_c_generate_signature_with_kw_only_argsz=StubgencSuite.test_non_c_generate_signature_with_kw_only_args  s    	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N  !)Y==	  	 	# 
	
 
	
 
	
 	t	
 	
 	
 	
 	
r;   c                @    G d dt                     }g }t          d          }t          |j        |j        g|          }|                    d||           t          |dg           t          |                                                                g            d S )Nc                      e Zd ZdS )AStubgencSuite.test_generate_c_type_inheritance.<locals>.TestClassNro  r4   r;   r9   rr  r  /          Dr;   rr  zmodule, r  r  zclass C(KeyError): ...)KeyErrorr   r   rp   r  r$   r  rj  r  s        r9    test_generate_c_type_inheritancez.StubgencSuite.test_generate_c_type_inheritance.  s    	 	 	 	 	 	 	 	 $$%cl3<.Y\]]]Y777V67888S__&&1133R88888r;   c                :   g }t          t          j        d          }t          |j        |j        g|          }|                    dt          |           t          |dg           t          |                                	                                g            d S )NrX   r  r  zclass C(TestBaseClass): ...)
r   rn  rq   r   rp   r  rr  r$   r  rj  r  s       r9   ,test_generate_c_type_inheritance_same_modulez:StubgencSuite.test_generate_c_type_inheritance_same_module9  s    1266%cl3<.Y\]]]Y777V;<===S__&&1133R88888r;   c                L   dd l } G d d|j                  }g }t          dd          }t          |j        |j        g|          }|                    d||           t          |dg           t          |                                                                d	g           d S )
Nr   c                      e Zd ZdS )NStubgencSuite.test_generate_c_type_inheritance_other_module.<locals>.TestClassNro  r4   r;   r9   rr  r  D  r  r;   rr  rI  rX   r  r  zclass C(argparse.Action): ...import argparse)	argparseActionr   r   rp   r  r$   r  rj  )rE   r  rr  r=  r8   r  s         r9   -test_generate_c_type_inheritance_other_modulez;StubgencSuite.test_generate_c_type_inheritance_other_moduleA  s    	 	 	 	 	 	 	 	 2&&%cl3<.Y\]]]Y777V=>???S__&&11336G5HIIIIIr;   c                B    G d dt                     }g }t          dd          }t          |j        |j        g|          }|                    d||           t          |dg           t          |                                                                g            d S )Nc                      e Zd ZdS )NStubgencSuite.test_generate_c_type_inheritance_builtin_type.<locals>.TestClassNro  r4   r;   r9   rr  r  O  r  r;   rr  rI  rX   r  r  zclass C(type): ...)r   r   r   rp   r  r$   r  rj  r  s        r9   -test_generate_c_type_inheritance_builtin_typez;StubgencSuite.test_generate_c_type_inheritance_builtin_typeN  s    	 	 	 	 	 	 	 	 2&&%cl3<.Y\]]]Y777V23444S__&&1133R88888r;   c           
     n    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                g            d S )
Nc                      e Zd ZddZdS )DStubgencSuite.test_generate_c_type_with_docstring.<locals>.TestClassr  ra   r+   r,   c                    dS )zB
                test(self: TestClass, arg0: int)
                Nr4   rE   r  s     r9   r  zIStubgencSuite.test_generate_c_type_with_docstring.<locals>.TestClass.test[        r;   Nr  ra   r+   r,   r  r4   r;   r9   rr  r  Z  (             r;   rr  rX   r  r  rE   r  r  r   r  %def test(self, arg0: int) -> Any: ...
r   rq   r   rp   r  r  r   r$   r  rj  r  s        r9   #test_generate_c_type_with_docstringz1StubgencSuite.test_generate_c_type_with_docstringY      	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N &ikRRR	 	# 	
 	
 	
 	VEFGGGS__&&1133R88888r;   c           
     n    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                g            d S )
Nc                      e Zd ZddZdS )PStubgencSuite.test_generate_c_type_with_docstring_no_self_arg.<locals>.TestClassr  ra   r+   r,   c                    dS )z1
                test(arg0: int)
                Nr4   r  s     r9   r  zUStubgencSuite.test_generate_c_type_with_docstring_no_self_arg.<locals>.TestClass.testn  r  r;   Nr  r  r4   r;   r9   rr  r  m  r  r;   rr  rX   r  r  rE   r  r  r  r  r  s        r9   /test_generate_c_type_with_docstring_no_self_argz=StubgencSuite.test_generate_c_type_with_docstring_no_self_argl  r  r;   c           
     p    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	d
g           t          |                                	                                g            d S )Nc                  &    e Zd Zedd            ZdS )AStubgencSuite.test_generate_c_type_classmethod.<locals>.TestClassr  ra   r+   r,   c                    d S rk   r4   r  r  s     r9   r  zFStubgencSuite.test_generate_c_type_classmethod.<locals>.TestClass.test  s    r;   Nr  rp   rq   rr   classmethodr  r4   r;   r9   rr  r    s2           [  r;   rr  rX   r  r  r  r  r  @classmethodz#def test(cls, *args, **kwargs): ...r  r  s        r9    test_generate_c_type_classmethodz.StubgencSuite.test_generate_c_type_classmethod  s    	 	 	 	 	 	 	 	
 -r22%cl3<.Y\]]]""N %Y[QQQ	 	# 	
 	
 	
 	Vn.STUUUS__&&1133R88888r;   c           
     r    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |g d	           t          |                                	                                d
g           d S )Nc                  &    e Zd Zedd            ZdS )PStubgencSuite.test_generate_c_type_classmethod_with_overloads.<locals>.TestClassr  ra   r+   r,   c                    dS )z[
                test(cls, arg0: str)
                test(cls, arg0: int)
                Nr4   r  s     r9   r  zUStubgencSuite.test_generate_c_type_classmethod_with_overloads.<locals>.TestClass.test  s	     r;   Nr  r  r4   r;   r9   rr  r    s2           [  r;   rr  rX   r  r  r  r  r  )	@overloadr  z$def test(cls, arg0: str) -> Any: ...r  r  z$def test(cls, arg0: int) -> Any: ...from typing import overloadr  r  s        r9   /test_generate_c_type_classmethod_with_overloadsz=StubgencSuite.test_generate_c_type_classmethod_with_overloads  s    	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N %Y[QQQ	 	# 	
 	
 	
 	  
	
 
	
 
	
 	S__&&11336S5TUUUUUr;   c           
     n    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                g            d S )
Nc                      e Zd Zdd	dZdS )
RStubgencSuite.test_generate_c_type_with_docstring_empty_default.<locals>.TestClassrX   r  ra   r+   r,   c                    dS )zG
                test(self: TestClass, arg0: str = "")
                Nr4   r  s     r9   r  zWStubgencSuite.test_generate_c_type_with_docstring_empty_default.<locals>.TestClass.test  r  r;   N)rX   r  r  r4   r;   r9   rr  r    s-              r;   rr  rX   r  r  rE   r  r  z+def test(self, arg0: str = ...) -> Any: ...r  r  s        r9   1test_generate_c_type_with_docstring_empty_defaultz?StubgencSuite.test_generate_c_type_with_docstring_empty_default      	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N &ikRRR	 	# 	
 	
 	
 	VKLMMMS__&&1133R88888r;   c                2   dd}g }t          | j        d          }t          |j        |j        g|          }|                    d||	           t          |d
g           t          |                                                                dg           dS )zQTest that if argument references type from other module, module will be imported.r  ra   r+   r,   c                    dS )z5
            test(arg0: argparse.Action)
            Nr4   r  s    r9   r  zEStubgencSuite.test_generate_c_function_other_module_arg.<locals>.test  r  r;   rX   r  r  r=  z+def test(arg0: argparse.Action) -> Any: ...r  Nr  r   rq   r   rp   r  r$   r  rj  rE   r  r=  r8   r  s        r9   )test_generate_c_function_other_module_argz7StubgencSuite.test_generate_c_function_other_module_arg  s    
	 	 	 	
 "--%cl3<.Y\]]]""64"???VKLMMMS__&&11336G5HIIIIIr;   c                &   dd}g }t          dd          }t          |j        |j        g|          }|                    d	||
           t	          |dg           t	          |                                                                g            dS )zTest that if annotation references type from same module but using full path, no module
        will be imported, and type specification will be striped to local reference.
        r  ra   r+   r,   c                    dS zH
            test(arg0: argparse.Action) -> argparse.Action
            Nr4   r	  s    r9   r  z@StubgencSuite.test_generate_c_function_same_module.<locals>.test  r  r;   r  rX   r  r  r
  z%def test(arg0: Action) -> Action: ...Nr  r   r   rp   r  r$   r  rj  r  s        r9   $test_generate_c_function_same_modulez2StubgencSuite.test_generate_c_function_same_module  s    	 	 	 	
 R((%cl3<.Y\]]]""64"???VEFGGGS__&&1133R88888r;   c                2   dd}g }t          | j        d          }t          |j        |j        g|          }|                    d||	           t          |d
g           t          |                                                                dg           dS )zSTest that if annotation references type from other module, module will be imported.r  ra   r+   r,   c                    dS r  r4   r	  s    r9   r  zAStubgencSuite.test_generate_c_function_other_module.<locals>.test  r  r;   rX   r  r  r
  z7def test(arg0: argparse.Action) -> argparse.Action: ...r  Nr  r  r  s        r9   %test_generate_c_function_other_modulez3StubgencSuite.test_generate_c_function_other_module  s    	 	 	 	
 "--%cl3<.Y\]]]""64"???VWXYYYS__&&11336G5HIIIIIr;   c                &   dd}g }t          dd          }t          |j        |j        g|          }|                    d	||
           t	          |dg           t	          |                                                                g            dS )Test that if annotation references type from same module but using full path, no module
        will be imported, and type specification will be stripped to local reference.
        r  ra   r+   r,   c                    dS )zT
            test(arg0: list[argparse.Action]) -> list[argparse.Action]
            Nr4   r	  s    r9   r  zGStubgencSuite.test_generate_c_function_same_module_nested.<locals>.test  r  r;   r  rX   r  r  r
  z1def test(arg0: list[Action]) -> list[Action]: ...Nr  r  r  s        r9   +test_generate_c_function_same_module_nestedz9StubgencSuite.test_generate_c_function_same_module_nested  s    	 	 	 	
 R((%cl3<.Y\]]]""64"???VQRSSSS__&&1133R88888r;   c                &   dd}g }t          dd          }t          |j        |j        g|          }|                    d	||
           t	          |dg           t	          |                                                                g            dS )r  r  ra   r+   r,   c                    dS )zj
            test(arg0: Union[argparse.Action, NoneType]) -> Tuple[argparse.Action, NoneType]
            Nr4   r	  s    r9   r  zIStubgencSuite.test_generate_c_function_same_module_compound.<locals>.test  r  r;   r  rX   r  r  r
  z?def test(arg0: Union[Action, None]) -> Tuple[Action, None]: ...Nr  r  r  s        r9   -test_generate_c_function_same_module_compoundz;StubgencSuite.test_generate_c_function_same_module_compound
  s    	 	 	 	
 R((%cl3<.Y\]]]""64"???V_`aaaS__&&1133R88888r;   c                ,   dd}g }t          | j        d          }t          |j        g d|          }|                    d	||
           t          |dg           t          |                                                                ddg           dS )zTest that if annotation references type from other module, module will be imported,
        and the import will be restricted to one of the known modules.r  ra   r+   r,   c                    dS )zC
            test(arg0: foo.bar.Action) -> other.Thing
            Nr4   r	  s    r9   r  zHStubgencSuite.test_generate_c_function_other_module_nested.<locals>.test!  r  r;   rX   )r   zfoo.spanglebarr  r  r
  z2def test(arg0: foo.bar.Action) -> other.Thing: ...z
import foozimport otherNr  r  r  s        r9   ,test_generate_c_function_other_module_nestedz:StubgencSuite.test_generate_c_function_other_module_nested  s    	 	 	 	
 "--%L(E(E(Ec
 
 
 	""64"???VRSTTTS__&&1133lN5STTTTTr;   c                Z   dd}t          d           |_        g }t          | j        d          }t	          |j        |j        g|          }|                    d	||
           t          |dg           t          |                                	                                g            d S )Nr  ra   r+   r,   c                    d S rk   r4   r	  s    r9   r  zSStubgencSuite.test_generate_c_function_no_crash_for_non_str_docstring.<locals>.test0  r  r;   c                    dS )Nztest(arg0: str) -> Noner4   r   s    r9   <lambda>zWStubgencSuite.test_generate_c_function_no_crash_for_non_str_docstring.<locals>.<lambda>2  s    -F r;   rX   r  r  r
  zdef test(*args, **kwargs): ...r  )
propertyrs   r   rq   r   rp   r  r$   r  rj  r  s        r9   7test_generate_c_function_no_crash_for_non_str_docstringzEStubgencSuite.test_generate_c_function_no_crash_for_non_str_docstring/  s    (((( F FGG"--%cl3<.Y\]]]""64"???V>?@@@S__&&1133R88888r;   c                    G d d          }g }g }t          dd          }t          |j        |j        g|          }|                    d|j        d         |j        g ||           t          |g            t          |ddg           d	S )
z>Signatures included by PyBind11 inside property.fget are read.c                  0    e Zd ZddZ eed          ZdS )GStubgencSuite.test_generate_c_property_with_pybind11.<locals>.TestClassr+   r,   c                    dS )z:
                (self: TestClass) -> str
                Nr4   r   s    r9   get_attributezUStubgencSuite.test_generate_c_property_with_pybind11.<locals>.TestClass.get_attribute?  r  r;   rX   )docNro   )rp   rq   rr   r+  r%  	attributer4   r;   r9   rr  r)  >  s8           
 !B777IIIr;   rr  rI  rX   r  r-  z	@propertyzdef attribute(self) -> str: ...Nr   r   rp   generate_property_stub__dict__r-  r$   rE   rr  readwrite_propertiesreadonly_propertiesr8   r  s         r9   &test_generate_c_property_with_pybind11z4StubgencSuite.test_generate_c_property_with_pybind11;  s    	8 	8 	8 	8 	8 	8 	8 	8 +-)+2&&%cl3<.Y\]]]""{+ 	
 	
 	
 	)2...(;8Y*Z[[[[[r;   c                    G d d          }g }g }t          dd          }t          |j        |j        g|          }|                    d|j        d         |j        g ||           t          |dg           t          |g            d S )Nc                  P    e Zd Zd	dZed
d            Zej        dd            ZdS )JStubgencSuite.test_generate_c_property_with_rw_property.<locals>.TestClassr+   r,   c                    d| _         d S )Nr   
_attributer   s    r9   __init__zSStubgencSuite.test_generate_c_property_with_rw_property.<locals>.TestClass.__init__W  s    "#r;   r   c                    | j         S rk   r9  r   s    r9   r-  zTStubgencSuite.test_generate_c_property_with_rw_property.<locals>.TestClass.attributeZ  s
    &r;   valuec                    || _         d S rk   r9  )rE   r=  s     r9   r-  zTStubgencSuite.test_generate_c_property_with_rw_property.<locals>.TestClass.attribute^  s    "'r;   Nro   )r+   r   )r=  r   r+   r,   )rp   rq   rr   r;  r%  r-  setterr4   r;   r9   rr  r7  V  sl        $ $ $ $ ' ' ' X' ( ( ( ( ( (r;   rr  rI  rX   r  r-  zattribute: Incompleter.  r1  s         r9   )test_generate_c_property_with_rw_propertyz7StubgencSuite.test_generate_c_property_with_rw_propertyU  s    
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( +-)+2&&%cl3<.Y\]]]""{+ 	
 	
 	
 	),C+DEEE("-----r;   c           
     n    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                g            d S )
Nc                      e Zd ZddZdS )MStubgencSuite.test_generate_c_type_with_single_arg_generic.<locals>.TestClassr  ra   r+   r,   c                    dS )zH
                test(self: TestClass, arg0: List[int])
                Nr4   r  s     r9   r  zRStubgencSuite.test_generate_c_type_with_single_arg_generic.<locals>.TestClass.tests  r  r;   Nr  r  r4   r;   r9   rr  rC  r  r  r;   rr  rX   r  r  rE   r  r  z+def test(self, arg0: List[int]) -> Any: ...r  r  s        r9   ,test_generate_c_type_with_single_arg_genericz:StubgencSuite.test_generate_c_type_with_single_arg_genericq  r  r;   c           
     n    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                g            d S )
Nc                      e Zd ZddZdS )MStubgencSuite.test_generate_c_type_with_double_arg_generic.<locals>.TestClassr  ra   r+   r,   c                    dS )zM
                test(self: TestClass, arg0: Dict[str, int])
                Nr4   r  s     r9   r  zRStubgencSuite.test_generate_c_type_with_double_arg_generic.<locals>.TestClass.test  r  r;   Nr  r  r4   r;   r9   rr  rH    r  r;   rr  rX   r  r  rE   r  r  z0def test(self, arg0: Dict[str, int]) -> Any: ...r  r  s        r9   ,test_generate_c_type_with_double_arg_genericz:StubgencSuite.test_generate_c_type_with_double_arg_generic  s    	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N &ikRRR	 	# 	
 	
 	
 	VPQRRRS__&&1133R88888r;   c           
     n    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                g            d S )
Nc                      e Zd ZddZdS )IStubgencSuite.test_generate_c_type_with_nested_generic.<locals>.TestClassr  ra   r+   r,   c                    dS )zS
                test(self: TestClass, arg0: Dict[str, List[int]])
                Nr4   r  s     r9   r  zNStubgencSuite.test_generate_c_type_with_nested_generic.<locals>.TestClass.test  r  r;   Nr  r  r4   r;   r9   rr  rM    r  r;   rr  rX   r  r  rE   r  r  z6def test(self, arg0: Dict[str, List[int]]) -> Any: ...r  r  s        r9   (test_generate_c_type_with_nested_genericz6StubgencSuite.test_generate_c_type_with_nested_generic  s    	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N &ikRRR	 	# 	
 	
 	
 	VVWXXXS__&&1133R88888r;   c           
     p    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                d
g           d S )Nc                      e Zd ZddZdS )[StubgencSuite.test_generate_c_type_with_generic_using_other_module_first.<locals>.TestClassr  ra   r+   r,   c                    dS )zY
                test(self: TestClass, arg0: Dict[argparse.Action, int])
                Nr4   r  s     r9   r  z`StubgencSuite.test_generate_c_type_with_generic_using_other_module_first.<locals>.TestClass.test  r  r;   Nr  r  r4   r;   r9   rr  rR    r  r;   rr  rX   r  r  rE   r  r  z<def test(self, arg0: Dict[argparse.Action, int]) -> Any: ...r  r  r  s        r9   :test_generate_c_type_with_generic_using_other_module_firstzHStubgencSuite.test_generate_c_type_with_generic_using_other_module_first      	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""N &ikRRR	 	# 	
 	
 	
 	V\]^^^S__&&11336G5HIIIIIr;   c           
     p    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |d	g           t          |                                	                                d
g           d S )Nc                      e Zd ZddZdS )ZStubgencSuite.test_generate_c_type_with_generic_using_other_module_last.<locals>.TestClassr  ra   r+   r,   c                    dS )zY
                test(self: TestClass, arg0: Dict[str, argparse.Action])
                Nr4   r  s     r9   r  z_StubgencSuite.test_generate_c_type_with_generic_using_other_module_last.<locals>.TestClass.test  r  r;   Nr  r  r4   r;   r9   rr  rX    r  r;   rr  rX   r  r  rE   r  r  z<def test(self, arg0: Dict[str, argparse.Action]) -> Any: ...r  r  r  s        r9   9test_generate_c_type_with_generic_using_other_module_lastzGStubgencSuite.test_generate_c_type_with_generic_using_other_module_last  rU  r;   c           
     r    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|d                     t          |g d	           t          |                                	                                d
g           d S )Nc                      e Zd ZddZdS )LStubgencSuite.test_generate_c_type_with_overload_pybind11.<locals>.TestClassr  ra   r+   r,   c                    dS )z
                __init__(*args, **kwargs)
                Overloaded function.

                1. __init__(self: TestClass, arg0: str) -> None

                2. __init__(self: TestClass, arg0: str, arg1: str) -> None
                Nr4   r  s     r9   r;  zUStubgencSuite.test_generate_c_type_with_overload_pybind11.<locals>.TestClass.__init__  r  r;   Nr  )rp   rq   rr   r;  r4   r;   r9   rr  r]    s(             r;   rr  rX   r  r;  rE   r  r  )r  *def __init__(self, arg0: str) -> None: ...r  5def __init__(self, arg0: str, arg1: str) -> None: ...r  z/def __init__(self, *args, **kwargs) -> Any: ...r  )
r   rq   r   rp   r  r;  r   r$   r  rj  r  s        r9   +test_generate_c_type_with_overload_pybind11z9StubgencSuite.test_generate_c_type_with_overload_pybind11  s    		 		 		 		 		 		 		 		 -r22%cl3<.Y\]]]"" &ikRRR	 	# 	
 	
 	
 	  
	
 
	
 
	
 	S__&&11336S5TUUUUUr;   c                    G d d          }g }t          |j        d          }t          |j        |j        g|          }|                    d|j        |t          d|dt          |dd                     	           t          |g d
           t          |	                                
                                dg           d S )Nc                      e Zd ZdZddZdS )	LStubgencSuite.test_generate_c_type_with_overload_shiboken.<locals>.TestClassz
            TestClass(self: TestClass, arg0: str) -> None
            TestClass(self: TestClass, arg0: str, arg1: str) -> None
            r  ra   r+   r,   c                    d S rk   r4   r  s     r9   r;  zUStubgencSuite.test_generate_c_type_with_overload_shiboken.<locals>.TestClass.__init__  r  r;   Nr  )rp   rq   rr   rs   r;  r4   r;   r9   rr  rd    s2         
     r;   rr  rX   r  r;  rE   rs   r  r  )r  r_  r  r`  r  )r   rq   r   rp   r  r;  r   r  r$   r  rj  r  s        r9   +test_generate_c_type_with_overload_shibokenz9StubgencSuite.test_generate_c_type_with_overload_shiboken  s	   	 	 	 	 	 	 	 	 -r22%cl3<.Y\]]]""  !)Y==	  	 	# 
	
 
	
 
	
 	  	
 	
 	
 	S__&&11336S5TUUUUUr;   Nro   ))rp   rq   rr   rs   rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r&  r4  r@  rE  rJ  rO  rT  rZ  ra  rf  r4   r;   r9   rt  rt    sJ        
? ? ? ?[ [ [ [C C C C   ] ] ] ]E E E EG G G GA A A A0 0 0 0
I 
I 
I 
I
 
 
 
0
 
 
 
:	9 	9 	9 	99 9 9 9J J J J	9 	9 	9 	99 9 9 9&9 9 9 9&9 9 9 9$V V V V@9 9 9 9&J J J J"9 9 9 9&J J J J9 9 9 9&9 9 9 9&U U U U$
9 
9 
9 
9\ \ \ \4. . . .89 9 9 9&9 9 9 9&9 9 9 9&J J J J&J J J J& V  V  V  VD!V !V !V !V !V !Vr;   rt  c                      e Zd ZddZdS )ArgSigSuiter+   r,   c           	     b   t          t          t          d                    d           t          t          t          d                    d           t          t          t          dd                    d           t          t          t          ddd	
                    d           d S )Nzasd"dsar   z0ArgSig(name='asd"dsa', type=None, default=False)zasd'dsaz0ArgSig(name="asd'dsa", type=None, default=False)r   ra   z.ArgSig(name='func', type='str', default=False)T)r   z-ArgSig(name='func', type='str', default=True))r$   reprr	   r   s    r9   	test_reprzArgSigSuite.test_repr  s    Y'''((*]	
 	
 	
 	Y'''((*]	
 	
 	
 	T&//002bccct44455;	
 	
 	
 	
 	
r;   Nro   )rp   rq   rr   rk  r4   r;   r9   rh  rh    s(        
 
 
 
 
 
r;   rh  c                      e Zd ZddZdS )IsValidTypeSuiter+   r,   c                X   t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d	          sJ t          d
          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          sJ t          d          rJ t          d          rJ t          d          rJ t          d          rJ t          d          rJ t          d          rJ d S )Nr   ra   
Foo_Bar234r   z	List[int]zDict[str, int]r,   zLiteral[26]zLiteral[0x1A]zLiteral["hello world"]zLiteral[b"hello world"]zLiteral[u"hello world"]zLiteral[True]zLiteral[Color.RED]zLiteral[None]z	str | intzdict[str, int] | intztuple[str, ...]zWLiteral[26, 0x1A, "hello world", b"hello world", u"hello world", True, Color.RED, None]zfoo-barzx->yTrueFalsezx,yzx, y)r   r   s    r9   test_is_valid_typez#IsValidTypeSuite.test_is_valid_type&  s   U#####U#####\*****Y'''''[)))))-.....V$$$$$]+++++_-----566666677777677777_-----122222_-----[)))))344444./////e
 
 	
 	
 	
 !+++++ ((((( ((((( ))))) ''''' (((((((r;   Nro   )rp   rq   rr   rr  r4   r;   r9   rm  rm  %  s(        ) ) ) ) ) )r;   rm  c                  .    e Zd ZddZddZddZddZdS )	ModuleInspectSuiter+   r,   c                    t                      5 }|                    d          }|J |j        dk    sJ |j        sJ |j        J |j        du sJ |j        g k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr6  F)r   get_package_propertiesr   rf   r5   r  subpackagesrE   r   ps      r9   test_python_modulez%ModuleInspectSuite.test_python_moduleE  s    __ 	'((33A===6Y&&&&6MMM6>>>=E))))=B&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AA..A25A2c                .   t                      5 }|                    d          }|J |j        dk    sJ |j        sJ |j        sJ |j        du sJ |j        sJ t          d |j        D                       sJ 	 d d d            d S # 1 swxY w Y   d S )Nrt   Fc              3  @   K   | ]}|                     d           V  dS )z	unittest.N)rX  )r7   r  s     r9   	<genexpr>z9ModuleInspectSuite.test_python_package.<locals>.<genexpr>X  s.      LLss~~k22LLLLLLr;   )r   rv  r   rf   r5   r  rw  allrx  s      r9   test_python_packagez&ModuleInspectSuite.test_python_packageO  s   __ 	M((44A===6Z''''6MMM6MMM=E))))=   LLamLLLLLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   A-B

BBc                    t                      5 }|                    d          }|J |j        dk    sJ |j        J |j        du sJ |j        g k    sJ 	 d d d            d S # 1 swxY w Y   d S )N_socketT)r   rv  r   r5   r  rw  rx  s      r9   test_c_modulez ModuleInspectSuite.test_c_moduleZ  s    __ 	'((33A===6Y&&&&6>>>=D((((=B&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AA%%A),A)c                   t                      5 }|                     t                    5 }|                    d           d d d            n# 1 swxY w Y   t	          |j                  dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzfoobar-non-existentz%No module named 'foobar-non-existent')r   assertRaisesr   rv  ra   	exception)rE   r   rK  s      r9   test_non_existentz$ModuleInspectSuite.test_non_existentc  s*   __ 	O""<00 @A(()>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @q{##'NNNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os4   A?A A?A	A?A	A??BBNro   )rp   rq   rr   rz  r  r  r  r4   r;   r9   rt  rt  D  sn        ' ' ' '	M 	M 	M 	M' ' ' 'O O O O O Or;   rt  rG  ra   rI  r+   c                    t           j                            | |                    dd           d          }t           j                            |          s7|                    dd          }t           j                            |          r|S |S )Nr   r#  z.pyiz/__init__.pyi)r<   r5   rC   r,  rh  )rG  rI  rJ  alt_fnams       r9   r9  r9  j  sw    7<<FNN3$<$<!B!B!BCCD7>>$ <<887>>(## 	OKr;   )rG  ra   rI  ra   r+   ra   )F
__future__r   rY   os.pathr<   rR  r@  r[   r>   rt   typesr   typingr   r  mypy.errorsr   mypy.moduleinspectr   r   mypy.stubdocr	   r
   r   r   r   r   r   r   r   r   mypy.stubgenr   r   r   r   r   r   r   mypy.stubgencr   r   mypy.stubutilr   r   r   r   r    r!   mypy.test.datar"   r#   mypy.test.helpersr$   r%   r&   TestCaser(   ry   r   r  r  rw  rn  rr  rt  rh  rm  rt  r9  r4   r;   r9   <module>r     sn   " " " " " " 				  				  



                $ $ $ $ $ $ : : : : : : : :                                         G F F F F F F F                9 8 8 8 8 8 8 8 Z Z Z Z Z Z Z Z Z ZO' O' O' O' O'(+ O' O' O'd    8,   $w	; w	; w	; w	; w	;x( w	; w	; w	;t&5 &5 &5 &5 &5(+ &5 &5 &5Rr4 r4 r4 r4 r4 r4 r4 r4j 6v	 	 	 	 	 	 	 		 	 	 	 	 	 	 	Y	V Y	V Y	V Y	V Y	VH% Y	V Y	V Y	Vx
 
 
 
 
(# 
 
 
) ) ) ) )x( ) ) )>#O #O #O #O #O* #O #O #OL     r;   