ML iddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlZddlmZddlmZmZddlmZmZmZmZmZmZmZmZmZmZddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(m)Z)dd l*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0dd l1m2Z2m3Z3dd l4m5Z5m6Z6m7Z7Gd de jpZ9Gdde jpZ:Gdde jpZ;Gdde jpZ<Gdde3Z=edZ>GddZ?Gdde?Z@Gdde jpZAGdd e jpZBGd!d"e jpZCGd#d$e jpZDd&d%ZEy)') annotationsN) ModuleType)Any) CompileError) InspectError ModuleInspect) ArgSig FunctionSigbuild_signaturefind_unique_signatures!infer_arg_sig_from_anon_docstringinfer_prop_type_from_docstringinfer_sig_from_docstring is_valid_typeparse_all_signaturesparse_signature)Optionscollect_build_targetsgenerate_stubsis_blacklisted_pathis_non_library_module mypy_options parse_options)InspectionStubGeneratorinfer_c_method_args) ClassInfoFunctionContextcommon_dir_prefixinfer_method_ret_typeremove_misplaced_type_comments walk_packages)DataDrivenTestCase DataSuite) assert_equalassert_string_arrays_equallocal_sys_path_setceZdZdZej ejdk(dd dZej ejdk(dd dZ ej ejdk(dd dZ ddd d Z d dfd Z xZ S)StubgenCmdLineSuitezATest cases for processing command-line options and finding files.win32clean up fails on Windowsc tj}tj5} tj|tj d|j dd|j ddtj tjjdd|j dddtdg}t|t|\}}}t|gt|g|Dchc]}|j}}t|tjjdddtjjddtjjddhtj| dddycc}w#tj|wxYw#1swYyxYw)Nsubdira.pyb.pypack __init__.py) osgetcwdtempfileTemporaryDirectorychdirmkdir make_filepathjoinrrrr$ selfcurrenttmpoptspy_modspyi_modsc_modsmodfiless [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/test/teststubgen.pytest_files_foundz$StubgenCmdLineSuite.test_files_found6sS))+  ( ( * "c " "x0x0h78x?$hZ0,A$ UYHZ,[)6Xr*VR(-45c55 Xv}E Xv6 Xv6!- " "6!- " "s6F=CF#FA,F#?F=F##F::F==Gc ptj}tj5} tj|tj d|j ddd|j dd|j ddtddg}t|t|\}}}t|gt|g|Dchc]/}tjj|jxsd1}}t|tjjddtjjddtjjddhtj| dddycc}w#tj|wxYw#1swYyxYw) Nr/r0zfrom . import a, bcontentr-r.z-pFAIL)r1r2r3r4r5r6r7rrrr$r8relpathr9r:s rDtest_packages_foundz'StubgenCmdLineSuite.test_packages_foundQsN))+  ( ( * "c "  v}>RSvv.vv.$dF^4,A$ UYHZ,[)6Xr*VR(HOP);V<PP V]; VV4 VV4!+ " "Q!+ " "s6F,B$F4F A+F.F, FF))F,,F5cDtj}tj}|t_t j5} tj||j|ddtddg}t|t||jdk(sJ tjt_tj| dddy#tjt_tj|wxYw#1swYyxYw)Nz mymodule.pyzimport arG-mmymodule)r1r2ioStringIOsysstdoutr3r4r5r7rrrgetvalue __stdout__)r;r<captured_outputr=r>s rDtest_module_not_foundz)StubgenCmdLineSuite.test_module_not_foundks))+++-$  ( ( * "c " sM:F$dJ%78%dL,>?&//1R777 ^^ ! " "!^^ ! " "s%D A C#+.D#0DDDrOrGctjj|}t|d5}|j |dddy#1swYyxYw)Nw)r1r8r9openwrite)r;rHr8filefs rDr7zStubgenCmdLineSuite.make_file{s@ww||T" $_  GGG    s AA cbt5t| |cdddS#1swYyxYwN)r&superrun)r;result __class__s rDrazStubgenCmdLineSuite.runs*  ! '7;v& ' ' 's%.returnNone)r8strrHrgrerfr_)rb Any | Nonererh)__name__ __module__ __qualname____doc__unittestskipIfrRplatformrErKrWr7ra __classcell__)rcs@rDr(r(3sKX__S\\W,.IJ"K"4X__S\\W,.IJ"K"2X__S\\W,.IJ "K "46 ''r(ceZdZddZy)StubgenCliParseSuitec :t5}ttt|dgdhttt|ddgddhtt|dg}|j |j hddddy#1swYyxYw)N mypy.errors mypy.stubgenmypy> mypy.testmypy.test.helpersrwrurv)rr$setr! assertTrue issuperset)r;mall_mypy_packagess rDtest_walk_packagesz'StubgenCliParseSuite.test_walk_packagess _  ]1}o>?- Q M!m^%DEF/  !$M!fX$> ?  OO!,,]    s A=BBNrd)rirjrkrrqrDrsrssrqrsceZdZdZd)dZd)dZd)dZd)dZd)dZd)dZ d)dZ d)d Z d*d Z d)d Z d)d Zd)d Zd)dZd)dZd)dZd)dZej*j-edd)dZd)dZd)dZd)dZd)dZd)dZd)dZd)dZd)dZ d)dZ!d)dZ"d)dZ#d)d Z$d)d!Z%e&jNe(jRd"k(d#d)d$Z*e&jNe(jRd"k7d%d)d&Z+d)d'Z,y()+StubgenUtilSuitez)Unit tests for stubgen utility functions.c.|jddggfy)Nzfunc()funcassert_parse_signaturer;s rDtest_parse_signaturez%StubgenUtilSuite.test_parse_signatures ##Hvr2.>?rqc^|jdddggf|jddddggfy)Nz func(arg)rargz do(arg, arg2)doarg2rrs rDtest_parse_signature_with_argsz/StubgenUtilSuite.test_parse_signature_with_argss6 ##K&5'21FG ##OdUFOR5PQrqc|jddgdgf|jdddgdgf|jddgddgfy)Nz func([arg])rrzfunc(arg[, arg2])rzfunc([arg[, arg2]])rrs rD'test_parse_signature_with_optional_argsz8StubgenUtilSuite.test_parse_signature_with_optional_argssT ##MFB3HI ##$7&5'F89TU ##$9FBPV;XYrqc|jddgdgf|jdddgdgf|jddgddgfy)Nzfunc(arg=None)rrzfunc(arg, arg2=None)rzfunc(arg=1, arg2="")rrs rD%test_parse_signature_with_default_argz6StubgenUtilSuite.test_parse_signature_with_default_argsU ##$4vrE76KL ##$:VeWvh@VWrqc:ttgdddggfy)N)z random textz.. function:: fn(argz.. function:: fn()z .. method:: fn2(arg))fnr)fn2r)r$rrs rDtest_parse_all_signaturesz*StubgenUtilSuite.test_parse_all_signaturess'  , -r 2 rqc6ttgdddgy)N)rrr)func2r)rrfunc3rrr)r$r rs rDtest_find_unique_signaturesz,StubgenUtilSuite.test_find_unique_signaturess" " 5 6 rqc ttddtdtdgdgttddtdtdgdgttddtdtdtd d gdgttd dtdtdtd d gdgttd dtdtdtd d gdgttddgttddgttddtdtdd gdgttddgttddtdtddgdgttddtdtddd gdgttddtdtddd gdgttddtdgdgttddtdtddd gdgttddtdtddd gdgttddtdtddgdgttddtdtddtd dgdgttd!dtdtdd"gdgttd#dtdtdd$d gdgttd%dtdtddd gdgttd&dgttd'dtdtddgdgttd(dtdtddd gdgy))Nz func(x) - yrxnamerrargsret_typez func(x)z func(x, Y_a=None)Y_aT)rdefaultz 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)intrtypez func(x: int=3)rrrz func(x=3)z func() -> intz func(x: int=3) -> intz func(x: int=3) -> int z func(x: Tuple[int, str]) -> strzTuple[int,str]rgz9 func(x: Tuple[int, Tuple[str, int], str], y: int) -> strTuple[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)z func(x: str="")r$rr r rs rDtest_infer_sig_from_docstringz.StubgenUtilSuite.test_infer_sig_from_docstrings, $_f = fF,<+= N O   $[& 9 fF,<+= N O  $%:F C c*Ft,LM"    $%7 @ c*Ft,LM"    $%? H c*Ft,LM"   -.>GL-mVDbI $%5v > fFT,J+KV[ \ ] -j&A2F $%5v > fF%,H+ITY Z [   $%7 @v3UD'Q&R]b    $]F ;v3T4'P&Q\a    $%6 ? f2 > ?  $%> Gv3UD'Q&R]b    $%CV Lv3UD'Q&R]b    $%H& Qv3=M'N&OZ_    $Lf C.MNCe4#     $%96 B fF),L+MX] ^ _  $%BF Kv3VT'R&S^c    $%> Gv3UD'Q&R]b   -.LfUWYZ $%NPV W fF$,G+HSX Y Z  $%8& Av3UD'Q&R]b  rqc vttddtdtdtdgdgy)Nz$ func(x, x) -> str func(x, y) -> intrrrrrrrrs rD,test_infer_sig_from_docstring_duplicate_argsz=StubgenUtilSuite.test_infer_sig_from_docstring_duplicate_argss4 $%Mv V fF,N+OZ_ ` a rqc0ttdddy)Nz: x x x rr$rrs rD-test_infer_sig_from_docstring_bad_indentationz>StubgenUtilSuite.test_infer_sig_from_docstring_bad_indentations! $     rqc .ttddtdtdtdgdgttddtdtdgdgttd dtdtdgdgy) Nzfunc(*args, **kwargs) -> intrrr**kwargsrrzfunc(*args) -> intzfunc(**kwargs) -> intrrs rD)test_infer_sig_from_docstring_args_kwargsz:StubgenUtilSuite.test_infer_sig_from_docstring_args_kwargss $%CV L g.J0GH"    $%96 B fF,@+AE R S  $% intrzfunc(**kw, **kw2) -> intzfunc(**kwargs, *args) -> intrrs rD0test_infer_sig_from_docstring_args_kwargs_errorszAStubgenUtilSuite.test_infer_sig_from_docstring_args_kwargs_errorssD -.JFSUWX -.H&QSUV -.LfUWYZrqc >ttddtdtdgdgttddtdtdtdgdgttd dtdtdtd gd gttd dtdtdtd gdgttddtdtdtdtdgdgy)Nzfunc(self, /) -> strrr;rrgrzfunc(self, x, /) -> strrzfunc(x, /, y) -> intrrzfunc(x, /, *args) -> strrz&func(x, /, *, kwonly, **kwargs) -> strkwonlyrrrs rD7test_infer_sig_from_docstring_positional_only_argumentszHStubgenUtilSuite.test_infer_sig_from_docstring_positional_only_argumentss $%;V D fF,?+@5 Q R  $%> Gv6':FN+OZ_ ` a  $%? Hv3'7W9M&NY^    $%Mv V c*F,A6zCZ["  rqc ttddtdtdgdgttddtdtdtdgdgttd dtdtdtdgdgttd dtdtdtd td gdgy) Nzfunc(*, x) -> strrrrrgrzfunc(x, *, y) -> strrzfunc(*, x, y) -> strz#func(x, *, kwonly, **kwargs) -> strrrrrs rD4test_infer_sig_from_docstring_keyword_only_argumentszEStubgenUtilSuite.test_infer_sig_from_docstring_keyword_only_argumentss $%8& A fF,<+= N O  $%;V D fF,N+OZ_ ` a  $%;V D fF,N+OZ_ ` a  $%JF S c*F,A6*CUV"  rqc ttddtdtdtdgdgttddtdtdtdtd gdgttd dtdtdtdtd td gdgy) Nzfunc(x, /, *, y) -> strrrrrrgrzfunc(x, /, y, *, z) -> strzz&func(x, /, y, *, z, **kwargs) -> strrrrs rDAtest_infer_sig_from_docstring_pos_only_and_keyword_only_argumentszRStubgenUtilSuite.test_infer_sig_from_docstring_pos_only_and_keyword_only_argumentss $%> G fF,N+OZ_ ` a  $%CV L c*F,NO"    $%Mv VC(C(C(z*  #   rqcdttddgttddgttddgttddgttddgttddgttddgttd dgy) Nzfunc(/, x) -> strrzfunc(x, *) -> strzfunc(x, *, /, y) -> strzfunc(x, /, /, *, y) -> strzfunc(x, /, y, /, *, z) -> strzfunc(x, /, *, *, y) -> strzfunc(x, /, *, y, *, z) -> strzfunc(*args, *, kwonly) -> strrrs rDHtest_infer_sig_from_docstring_pos_only_and_keyword_only_arguments_errorszYStubgenUtilSuite.test_infer_sig_from_docstring_pos_only_and_keyword_only_arguments_errorss-.A6JBO -.A6JBO -.H&QSUV -.KVTVXY-.OQWXZ\] -.KVTVXY-.NPVWY[\ -.MvVXZ[rqc ttdtdtdgttdtddd td d d gy) Nz(*args, **kwargs)rrrzB(x: Tuple[int, Tuple[str, int], str]=(1, ('a', 2), 'y'), y: int=4)rrTrrr)r$r r rs rD&test_infer_arg_sig_from_anon_docstringz7StubgenUtilSuite.test_infer_arg_sig_from_anon_docstring0sZ -.A B  !6z#: ;  -T C&EtTCeT:   rqcttddttddttddttddy)Nzstr: A string.rgzOptional[int]: An int.z Optional[int]zTuple[int, int]: A tuple.zTuple[int, int]z str: A string.)r$rrs rD#test_infer_prop_type_from_docstringz4StubgenUtilSuite.test_infer_prop_type_from_docstring@sK34DEuM34LM_ *+F GIZ  34FGNrqc&tddgk(sJy)Nz*fetch_row([maxrows, how]) -- Fetches stuff fetch_row)rrs rD-test_infer_sig_from_docstring_square_bracketsz>StubgenUtilSuite.test_infer_sig_from_docstring_square_bracketsHs $%QS^ _   rqc2d}tt||y)Nu ሴ def f(x): # type: (int) -> int def g(x): # type: (int) -> int def h(): # type: () int x = 1 # type: int r$r )r;goods rD%test_remove_misplaced_type_comments_1z6StubgenUtilSuite.test_remove_misplaced_type_comments_1Ns   3D94@rqc6d}d}tt||y)Nz def f(x): # type: Callable[[int], int] pass # type: "foo" # type: 'bar' x = 1 # type: int z? def f(x): pass x = 1 rr;bad bad_fixeds rD%test_remove_misplaced_type_comments_2z6StubgenUtilSuite.test_remove_misplaced_type_comments_2_"     3C8)Drqc6d}d}tt||y)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 rrs rD%test_remove_misplaced_type_comments_3z6StubgenUtilSuite.test_remove_misplaced_type_comments_3v"     3C8)Drqc6d}d}tt||y)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 rrs rD%test_remove_misplaced_type_comments_4z6StubgenUtilSuite.test_remove_misplaced_type_comments_4rrqc6d}d}tt||y)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 rrs rD%test_remove_misplaced_type_comments_5z6StubgenUtilSuite.test_remove_misplaced_type_comments_5rrqc6d}d}tt||y)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)r;originaldests rD)test_remove_misplaced_type_comments_bytesz:StubgenUtilSuite.test_remove_misplaced_type_comments_bytess"     3H=tDrqr)z0Tests building the paths common ancestor on *nixctgdk(sJtdgdk(sJtdgdk(sJtdgdk(sJtddgdk(sJtddgdk(sJtd dgdk(sJtd dgdk(sJtd d gdk(sJtd dgdk(sJtdd gdk(sJtd gdk(sJtd gdk(sJy)N.x.pyiz./x.pyi foo/bar/x.pyizfoo/barz foo/bar/y.pyiz foo/y.pyifooz foo/x.pyizfoo/bar/zar/x.pyizfoo/bar/zar/y.pyi foo/bar\x.pyi foo\bar/x.pyifoo\barrrs rDtest_common_dir_prefix_unixz,StubgenUtilSuite.test_common_dir_prefix_unixs/ $+++ '+s222 )-444 /!23y@@@ /?!CD QQQ /;!?@EIII +!?@EIII "5{!CDMMM +/B!CDMMM "5!GHIUUU /3F!GHIUUU "2!34=== "2!34 BBBrqz3Tests building the paths common ancestor on Windowsctdgdk(sJtdgdk(sJtdgdk(sJtddgdk(sJtddgdk(sJtd dgdk(sJtd dgdk(sJtd d gdk(sJtd dgdk(sJtdd gdk(sJtd gdk(sJtd gdk(sJtdgdk(sJy)Nrrz.\x.pyiz foo\bar\x.pyirz foo\bar\y.pyiz foo\y.pyirz foo\x.pyizfoo\bar\zar\x.pyizfoo\bar\zar\y.pyirrrrrs rDtest_common_dir_prefix_winz+StubgenUtilSuite.test_common_dir_prefix_wins<!'+s222 *.#555 "2!34 BBB "24D!EF*TTT "2L!ABeKKK ,0@!ABeKKK "6 !EF%OOO ,0D!EF%OOO "68H!IJjXXX "24H!IJjXXX "2!34 BBB "2!34 BBB "2!34 BBBrqc ptddtddtdd}|jd k(sJy) NspanglerNestedr;Parent)rself_var)rrparent) module_namer class_infozspangle.Parent.Nested.foo)rrfullname)r;ctxs rD$test_function_context_nested_classesz5StubgenUtilSuite.test_function_context_nested_classess>! yhY_7` ||::::rqNrd)rrgrbz tuple[str, list[str], list[str]]rerf)-rirjrkrlrrrrrrrrrrrrrrrrpytestmarkxfailAssertionErrorrrrrrrrrrrrrrrrmrnrRrorrrrrqrDrrs>3@RZ [ R bd3X    _ B   , [[&^[[& P 6 B\. O A"E.E6E6E.EBX__S\\W,.`a Cb CX__ !V C C;rqrceZdZddZddZy)StubgenHelpersSuitectdrJtdrJtdrJtdrJtdsJtdsJtdsJtdsJy) Nz foo/bar.pyzfoo.pyzfoo/xvendor/bar.pyzfoo/vendorx/bar.pyzfoo/vendor/bar.pyzfoo/vendored/bar.pyzfoo/vendored/bar/thing.pyz foo/six.py)rrs rDtest_is_blacklisted_pathz,StubgenHelpersSuite.test_is_blacklisted_pathsw&|444&x000&';<<<&';<<<"#6777"#8999"#>???"<000rqc tdrJtdrJtdrJtdrJtdrJtdsJtdsJtdsJtd sJtd sJtd sJtd sJtd sJtdsJtdsJtdsJtdsJtdsJtdsJtdsJy)Nrrz foo.bartestz foo.bartestsz foo.testbarzfoo.testz foo.test.fooz foo.testsz foo.tests.foozfoo.testing.foozfoo.SelfTest.fooz foo.test_barz foo.bar_testsz foo.testingz foo.conftestzfoo.bar_test_utilzfoo.bar_test_utilszfoo.bar_test_basez foo.setupz foo.__main__)rrs rDtest_is_non_library_modulez.StubgenHelpersSuite.test_is_non_library_modules!(///(333)777(888(777$Z000$^444$[111$_555$%6777$%7888$^444$_555$]333$^444$%8999$%9:::$%8999$[111$^444rqNrd)rirjrkrrrrqrDrrs 15rqrceZdZdZdZdZdgZeje jdk(dd dZ d dZ dd Z dd Zdd Zy )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') Trz stubgen.testr)r*cdt5|j|dddy#1swYyxYwr_)r&run_case_inner)r;testcases rDrun_casezStubgenPythonSuite.run_caseSs+  ! *    ) * * *s&/c Tg}g}dj|j}|jd|fgzD]\}}|ddjdd}|j dr|j d\}}}|j |d|vr|jd |gt|d 5} | j|ddd|j||} tj| jkrtj|j!|} d } |j"j d rd | _nD|j"j dsd | _|j"j dsd | _t+| g} | D].}t-| |}|j/|| t1| dkD0 t7|j8| d|j:d|j<d|D]&}|tj>vstj>|=(tAjB| y#1swYxYw#t2$r}|j4} Yd}~d}~wwxYw#|D]&}|tj>vstj>|=(tAjB| wxYw)N z ./main.py/rz .__init__z-p rMrYout_inspectT_import_semanal)headerzInvalid output (z, line ))"r9inputrCreplaceendswith rpartitionappendextendrZr[ parse_flagsrR version_info pyversionr skip parse_modulesrinspect no_import parse_onlyrmodule_to_pathadd_filelenrmessagesr%outputr\linemodulesshutilrmtree)r;rextramodssourcer\rHrB_r]optionsr9out_diramodulefnames rDrz!StubgenPythonSuite.run_case_innerXsi8>>*%^^ V/D.EE !MD'q*$$S#.C||K(NN3/ Q KK F" dC[)dC !A  ! ! !""651   g// / KKM$$V, # ==))*5&*GO#==11)<,0)#==11*=-1*w'!%DF)'6:DMM$#g,2BMCD '&6x}}oWX]]O[\$]  )#++% C( ) MM' "A ! !.  JJ   )#++% C( ) MM' "sC'H6B'I3I%6I  I" II%I""I%%J'>)J'ctjd|tj}d}|r^|jdj }t |D]0\}}|j ds|j ddd}||=nng}t||z}|r0|j dd\} } t| t| f|_ d|vr d|_ |Sd|_ |S) Nz# flags: (.*)$flagsr"z--python-version==rz --verboseT) research MULTILINEgroupsplit enumerate startswithrrr-quietverbose) r; program_textr<rHr- flag_listiflagr@majorminors rDr+zStubgenPythonSuite.parse_flagss *L M  A,,.I$Y/ 4??#67 $ 3 21 5I!!    I E 12 %??32LE5!$USZ 8G  i ' GM#GOrqctjd|tj}|r|jdj SdgS)Nz# modules: (.*)$rGr"main)rJrKrLrMrN)r;rSr9s rDr/z StubgenPythonSuite.parse_moduless;)). BLLQ ==#))+ +8Orqc\tjj|s%|jd|j ddzy|r|jd|ddt |d5}|j |jjdddy#1swYyxYw)Nz<%s was not generated>\rz# utf8)encoding) r1r8existsr)r&rZr*read splitlines)r;r8rbr#r\s rDr4zStubgenPythonSuite.add_filesww~~d# MM2T\\$5LL M   MMBtABxj/ * $ ( 4D MM$))+002 3 4 4 4s +.B""B+N)rr"rerf)rSrgr< list[str]rer)rSrgrerc)r8rgrbrcr#boolrerf)rirjrkrlrequired_out_section base_pathrCrmrnrRrorrr+r/r4rrqrDrr:s[( I  EX__S\\W,.IJ*K*,#\04rqrr;rc eZdZy) TestBaseClassNrirjrkrrqrDrhrhrqrhc eZdZy) TestClassNrirrqrDrlrlrjrqrlc8eZdZdZd(dZd(dZd(dZd(dZd(dZd(dZ d(dZ d(d Z d(d Z d(d Z d(d Zd(d Zd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZ d(dZ!d(d Z"d(d!Z#d(d"Z$d(d#Z%d(d$Z&d(d%Z'd(d&Z(y')) StubgencSuitezoUnit tests for stub generation from C modules using introspection. Note that these don't cover a lot! cbttdtgttddy)N__hash__r)r$rself_argrrs rDtest_infer_hash_sigz!StubgencSuite.test_infer_hash_sigs$(4xjA*:6>rqcNttdttdgy)N __getitem__indexrr$rrqr rs rDtest_infer_getitem_sigz$StubgencSuite.test_infer_getitem_sigs(7(FPWDX9YZrqcttdttdtdgtt ddy)N __setitem__rurobjectrf)r$rrqr rrs rDtest_infer_setitem_sigz$StubgencSuite.test_infer_setitem_sigs8  . v7+V-B C  *=96Brqc fdD],}ttd|dttddg.y)N)eqneltlegtge__otherrzrrvr;ops rDtest_infer_eq_op_sigz"StubgencSuite.test_infer_eq_op_sigs86 B #bBK08VW_=`2a  rqcddD]+}ttd|dttdg-y)N)addraddsubrsubmulrmulrrrrvrs rDtest_infer_binary_op_sigz&StubgencSuite.test_infer_binary_op_sigs6? ]B ,r"R[9HfRYFZ;[ \ ]rqcDdD]}ttd|ddy)N)r}r~rrrrcontainsrrdr$rrs rDtest_infer_equality_op_sigz(StubgencSuite.test_infer_equality_op_sigs+B EB .B4r{;V D ErqcNdD] }ttd|dtg"y)N)negposr)r$rrqrs rDtest_infer_unary_op_sigz%StubgencSuite.test_infer_unary_op_sigs-  GB ,r"R[9H: F GrqcDdD]}ttd|d|y)N)floatrdbytesrrrrs rDtest_infer_cast_sigz!StubgencSuite.test_infer_cast_sigs+3 AB .B4r{;R @ Arqcg}tdd}t|j|jg|}|jdt|t |j jgt |ddy)NrCrO known_modulesrCaliasrz class alias:)rrrigenerate_class_stubrzr$ get_importsrbr;r7rBgens rD,test_generate_class_stub_no_crash_for_objectz:StubgencSuite.test_generate_class_stub_no_crash_for_objectsf2&%cll3<<.Y\] 8S__&113R8VAY/rqcGdd}g}tdd}t|j|jg|}|jd||t |j j dgt |dd gy) NceZdZdZy)]StubgencSuite.test_generate_class_stub_variable_type_annotation..TestClassVariableClsr"N)rirjrkrrrqrDTestClassVariableClsrsArqrrCrOrCzfrom typing import ClassVarzclass C:z x: ClassVar[int] = ...)rrrirr$rrb)r;rr7rBrs rD1test_generate_class_stub_variable_type_annotationz?StubgencSuite.test_generate_class_stub_variable_type_annotationsy  2&%cll3<<.Y\] %96BS__&1136S5TUVj*FGHrqc$Gdd}g}t|jd}t|j|jg|}d|_|j d|j |td|dt|dd  t|d gy) NceZdZdddZy)BStubgencSuite.test_generate_c_type_none_default..TestClassNcyr_r)r;arg0arg1s rDtestzGStubgencSuite.test_generate_c_type_none_default..TestClass.testrq)r"NrdrirjrkrrrqrDrlrs rqrlrOrFrr;rlrclsr docstringr7rzKdef test(self, arg0: int = ..., arg1: Incomplete | None = ...) -> None: ... rrjrri is_c_modulegenerate_function_stubrrgetattrr$r;rlr7rBrs rD!test_generate_c_type_none_defaultz/StubgencSuite.test_generate_c_type_none_defaults  --r2%cll3<<.Y\] ""  NN  !)Y=  #   bc rqc$Gdd}g}t|jd}t|j|jg|}d|_|j d|j |td|dt|dd  t|d gy) Nc(eZdZdd ddZy)PStubgencSuite.test_non_c_generate_signature_with_kw_only_args..TestClass)keyword_only_with_defaultcyr_r)r;r keyword_onlyrs rDrzUStubgencSuite.test_non_c_generate_signature_with_kw_only_args..TestClass.testsrqN)rrgrrgrrrerfrrrqrDrlrs*XY  25 RU  rqrlrOrFrr;rlrrzbdef test(self, arg0: str, *, keyword_only: str, keyword_only_with_default: int = ...) -> None: ...rrs rD/test_non_c_generate_signature_with_kw_only_argsz=StubgencSuite.test_non_c_generate_signature_with_kw_only_argss   --r2%cll3<<.Y\] ""  NN  !)Y=  #   t  rqcGddt}g}td}t|j|jg|}|j d||t |dgt |j jgy)Nc eZdZy)AStubgencSuite.test_generate_c_type_inheritance..TestClassNrirrqrDrlr/ rqrlzmodule, rrzclass C(KeyError): ...)KeyErrorrrrirr$rrbrs rD test_generate_c_type_inheritancez.StubgencSuite.test_generate_c_type_inheritance.sr  $%cll3<<.Y\] Y7V678S__&113R8rqcg}ttjd}t|j|jg|}|j dt |t|dgt|jjgy)NrOrrzclass C(TestBaseClass): ...) rrhrjrrirrlr$rrbrs rD,test_generate_c_type_inheritance_same_modulez:StubgencSuite.test_generate_c_type_inheritance_same_module9sl1126%cll3<<.Y\] Y7V;<=S__&113R8rqc*ddl}Gdd|j}g}tdd}t|j|jg|}|j d||t |dgt |jjd gy) Nrc eZdZy)NStubgencSuite.test_generate_c_type_inheritance_other_module..TestClassNrirrqrDrlrDrrqrlrCrOrrzclass C(argparse.Action): ...import argparse) argparseActionrrrirr$rrb)r;rrlr7rBrs rD-test_generate_c_type_inheritance_other_modulez;StubgencSuite.test_generate_c_type_inheritance_other_moduleAs  2&%cll3<<.Y\] Y7V=>?S__&1136G5HIrqcGddt}g}tdd}t|j|jg|}|j d||t |dgt |j jgy)Nc eZdZy)NStubgencSuite.test_generate_c_type_inheritance_builtin_type..TestClassNrirrqrDrlrOrrqrlrCrOrrzclass C(type): ...)rrrrirr$rrbrs rD-test_generate_c_type_inheritance_builtin_typez;StubgencSuite.test_generate_c_type_inheritance_builtin_typeNst  2&%cll3<<.Y\] Y7V234S__&113R8rqc NGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjgy) NceZdZddZy)DStubgencSuite.test_generate_c_type_with_docstring..TestClasscy)zB test(self: TestClass, arg0: int) Nrr;rs rDrzIStubgencSuite.test_generate_c_type_with_docstring..TestClass.test[rqNrrgrerfrrrqrDrlrZ rqrlrOrrr;rrrr%def test(self, arg0: int) -> Any: ... rrjrrirrrr$rrbrs rD#test_generate_c_type_with_docstringz1StubgencSuite.test_generate_c_type_with_docstringY   --r2%cll3<<.Y\] ""  NN &ikR # VEFGS__&113R8rqc NGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjgy) NceZdZddZy)PStubgencSuite.test_generate_c_type_with_docstring_no_self_arg..TestClasscy)z1 test(arg0: int) Nrrs rDrzUStubgencSuite.test_generate_c_type_with_docstring_no_self_arg..TestClass.testnrrqNrrrrqrDrlrmrrqrlrOrrr;rrrrrs rD/test_generate_c_type_with_docstring_no_self_argz=StubgencSuite.test_generate_c_type_with_docstring_no_self_arglrrqc PGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d d gt|jjgy) NceZdZeddZy)AStubgencSuite.test_generate_c_type_classmethod..TestClasscyr_rrrs rDrzFStubgencSuite.test_generate_c_type_classmethod..TestClass.testsrqNrrirjrk classmethodrrrqrDrlrs   rqrlrOrrrrr @classmethodz#def test(cls, *args, **kwargs): ...rrs rD test_generate_c_type_classmethodz.StubgencSuite.test_generate_c_type_classmethods   --r2%cll3<<.Y\] ""  NN %Y[Q # Vn.STUS__&113R8rqc RGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|gd t|jjd gy) NceZdZeddZy)PStubgencSuite.test_generate_c_type_classmethod_with_overloads..TestClasscy)z[ test(cls, arg0: str) test(cls, arg0: int) Nrrs rDrzUStubgencSuite.test_generate_c_type_classmethod_with_overloads..TestClass.tests rqNrrrrqrDrlrs   rqrlrOrrrrr) @overloadrz$def test(cls, arg0: str) -> Any: ...rrz$def test(cls, arg0: int) -> Any: ...from typing import overloadrrs rD/test_generate_c_type_classmethod_with_overloadsz=StubgencSuite.test_generate_c_type_classmethod_with_overloadss  --r2%cll3<<.Y\] ""  NN %Y[Q #     S__&1136S5TUrqc NGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjgy) NceZdZdddZy)RStubgencSuite.test_generate_c_type_with_docstring_empty_default..TestClasscy)zG test(self: TestClass, arg0: str = "") Nrrs rDrzWStubgencSuite.test_generate_c_type_with_docstring_empty_default..TestClass.testrrqN)rOrrrrqrDrlrs rqrlrOrrr;rrz+def test(self, arg0: str = ...) -> Any: ...rrs rD1test_generate_c_type_with_docstring_empty_defaultz?StubgencSuite.test_generate_c_type_with_docstring_empty_default   --r2%cll3<<.Y\] ""  NN &ikR # VKLMS__&113R8rqcd d}g}t|jd}t|j|jg|}|j d||t |dgt |j jdgy) zQTest that if argument references type from other module, module will be imported.cy)z5 test(arg0: argparse.Action) Nrrs rDrzEStubgencSuite.test_generate_c_function_other_module_arg..testrrqrOrrr7z+def test(arg0: argparse.Action) -> Any: ...rNrrrjrrirr$rrbr;rr7rBrs rD)test_generate_c_function_other_module_argz7StubgencSuite.test_generate_c_function_other_module_argsx   "-%cll3<<.Y\] ""64"?VKLMS__&1136G5HIrqcd d}g}tdd}t|j|jg|}|jd||t |dgt |j j gy) 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. cyzH test(arg0: argparse.Action) -> argparse.Action Nrrs rDrz@StubgencSuite.test_generate_c_function_same_module..testrrqrrOrrrz%def test(arg0: Action) -> Action: ...Nrrrrirr$rrbrs rD$test_generate_c_function_same_modulez2StubgencSuite.test_generate_c_function_same_modulesp  R(%cll3<<.Y\] ""64"?VEFGS__&113R8rqcd d}g}t|jd}t|j|jg|}|j d||t |dgt |j jdgy) zSTest that if annotation references type from other module, module will be imported.cyr rrs rDrzAStubgencSuite.test_generate_c_function_other_module..testrrqrOrrrz7def test(arg0: argparse.Action) -> argparse.Action: ...rNrrrs rD%test_generate_c_function_other_modulez3StubgencSuite.test_generate_c_function_other_modulesx  "-%cll3<<.Y\] ""64"?VWXYS__&1136G5HIrqcd d}g}tdd}t|j|jg|}|jd||t |dgt |j j gy) 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. cy)zT test(arg0: list[argparse.Action]) -> list[argparse.Action] Nrrs rDrzGStubgencSuite.test_generate_c_function_same_module_nested..testrrqrrOrrrz1def test(arg0: list[Action]) -> list[Action]: ...Nrr rs rD+test_generate_c_function_same_module_nestedz9StubgencSuite.test_generate_c_function_same_module_nestedsp  R(%cll3<<.Y\] ""64"?VQRSS__&113R8rqcd d}g}tdd}t|j|jg|}|jd||t |dgt |j j gy) rcy)zj test(arg0: Union[argparse.Action, NoneType]) -> Tuple[argparse.Action, NoneType] Nrrs rDrzIStubgencSuite.test_generate_c_function_same_module_compound..testrrqrrOrrrz?def test(arg0: Union[Action, None]) -> Tuple[Action, None]: ...Nrr rs rD-test_generate_c_function_same_module_compoundz;StubgencSuite.test_generate_c_function_same_module_compound sp  R(%cll3<<.Y\] ""64"?V_`aS__&113R8rqcd d}g}t|jd}t|jgd|}|j d||t |dgt |j jdd gy ) 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.cy)zC test(arg0: foo.bar.Action) -> other.Thing Nrrs rDrzHStubgencSuite.test_generate_c_function_other_module_nested..test!rrqrO)rz foo.spanglebarrrrz2def test(arg0: foo.bar.Action) -> other.Thing: ...z import fooz import otherNrrrs rD,test_generate_c_function_other_module_nestedz:StubgencSuite.test_generate_c_function_other_module_nestedsx  "-% LL(Ec  ""64"?VRSTS__&113lN5STrqc6dd}td|_g}t|jd}t |j |j g|}|j d||t|dgt|jjgy) Ncyr_rrs rDrzSStubgencSuite.test_generate_c_function_no_crash_for_non_str_docstring..test0rrqcy)Nztest(arg0: str) -> Nonerrs rDzWStubgencSuite.test_generate_c_function_no_crash_for_non_str_docstring..2rrqrOrrrzdef test(*args, **kwargs): ...r) propertyrlrrjrrirr$rrbrs rD7test_generate_c_function_no_crash_for_non_str_docstringzEStubgencSuite.test_generate_c_function_no_crash_for_non_str_docstring/s}( FG "-%cll3<<.Y\] ""64"?V>?@S__&113R8rqc Gdd}g}g}tdd}t|j|jg|}|jd|jd|j g||t |gt |ddgy ) z>Signatures included by PyBind11 inside property.fget are read.c(eZdZddZeedZy)GStubgencSuite.test_generate_c_property_with_pybind11..TestClasscy)z: (self: TestClass) -> str Nrrs rD get_attributezUStubgencSuite.test_generate_c_property_with_pybind11..TestClass.get_attribute?rrqrO)docNrd)rirjrkr%r attributerrqrDrlr#>s  !B7IrqrlrCrOrr'z @propertyzdef attribute(self) -> str: ...Nrrrigenerate_property_stub__dict__r'r$r;rlreadwrite_propertiesreadonly_propertiesrBrs rD&test_generate_c_property_with_pybind11z4StubgencSuite.test_generate_c_property_with_pybind11;s 8 8+-)+2&%cll3<<.Y\] ""    { +        )2.(;8Y*Z[rqc Gdd}g}g}tdd}t|j|jg|}|jd|jd|j g||t |dgt |gy)NcLeZdZddZeddZej ddZy)JStubgencSuite.test_generate_c_property_with_rw_property..TestClasscd|_y)Nr _attributers rD__init__zSStubgencSuite.test_generate_c_property_with_rw_property..TestClass.__init__Ws "#rqc|jSr_r3rs rDr'zTStubgencSuite.test_generate_c_property_with_rw_property..TestClass.attributeZs &rqc||_yr_r3)r;values rDr'zTStubgencSuite.test_generate_c_property_with_rw_property..TestClass.attribute^s "'rqNrd)rer)r8rrerf)rirjrkr5rr'setterrrqrDrlr1Vs5 $ ' '   ( (rqrlrCrOrr'zattribute: Incompleter(r+s rD)test_generate_c_property_with_rw_propertyz7StubgencSuite.test_generate_c_property_with_rw_propertyUs ( (+-)+2&%cll3<<.Y\] ""    { +        ),C+DE("-rqc NGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjgy) NceZdZddZy)MStubgencSuite.test_generate_c_type_with_single_arg_generic..TestClasscy)zH test(self: TestClass, arg0: List[int]) Nrrs rDrzRStubgencSuite.test_generate_c_type_with_single_arg_generic..TestClass.testsrrqNrrrrqrDrlr=rrrqrlrOrrr;rrz+def test(self, arg0: List[int]) -> Any: ...rrs rD,test_generate_c_type_with_single_arg_genericz:StubgencSuite.test_generate_c_type_with_single_arg_genericqrrqc NGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjgy) NceZdZddZy)MStubgencSuite.test_generate_c_type_with_double_arg_generic..TestClasscy)zM test(self: TestClass, arg0: Dict[str, int]) Nrrs rDrzRStubgencSuite.test_generate_c_type_with_double_arg_generic..TestClass.testrrqNrrrrqrDrlrBrrqrlrOrrr;rrz0def test(self, arg0: Dict[str, int]) -> Any: ...rrs rD,test_generate_c_type_with_double_arg_genericz:StubgencSuite.test_generate_c_type_with_double_arg_generics   --r2%cll3<<.Y\] ""  NN &ikR # VPQRS__&113R8rqc NGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjgy) NceZdZddZy)IStubgencSuite.test_generate_c_type_with_nested_generic..TestClasscy)zS test(self: TestClass, arg0: Dict[str, List[int]]) Nrrs rDrzNStubgencSuite.test_generate_c_type_with_nested_generic..TestClass.testrrqNrrrrqrDrlrGrrqrlrOrrr;rrz6def test(self, arg0: Dict[str, List[int]]) -> Any: ...rrs rD(test_generate_c_type_with_nested_genericz6StubgencSuite.test_generate_c_type_with_nested_generics   --r2%cll3<<.Y\] ""  NN &ikR # VVWXS__&113R8rqc PGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjd gy) NceZdZddZy)[StubgencSuite.test_generate_c_type_with_generic_using_other_module_first..TestClasscy)zY test(self: TestClass, arg0: Dict[argparse.Action, int]) Nrrs rDrz`StubgencSuite.test_generate_c_type_with_generic_using_other_module_first..TestClass.testrrqNrrrrqrDrlrLrrqrlrOrrr;rrz Any: ...rrrs rD:test_generate_c_type_with_generic_using_other_module_firstzHStubgencSuite.test_generate_c_type_with_generic_using_other_module_first   --r2%cll3<<.Y\] ""  NN &ikR # V\]^S__&1136G5HIrqc PGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|d gt|jjd gy) NceZdZddZy)ZStubgencSuite.test_generate_c_type_with_generic_using_other_module_last..TestClasscy)zY test(self: TestClass, arg0: Dict[str, argparse.Action]) Nrrs rDrz_StubgencSuite.test_generate_c_type_with_generic_using_other_module_last..TestClass.testrrqNrrrrqrDrlrRrrqrlrOrrr;rrz Any: ...rrrs rD9test_generate_c_type_with_generic_using_other_module_lastzGStubgencSuite.test_generate_c_type_with_generic_using_other_module_lastrOrqc RGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|gd t|jjd gy) NceZdZddZy)LStubgencSuite.test_generate_c_type_with_overload_pybind11..TestClasscy)z __init__(*args, **kwargs) Overloaded function. 1. __init__(self: TestClass, arg0: str) -> None 2. __init__(self: TestClass, arg0: str, arg1: str) -> None Nrrs rDr5zUStubgencSuite.test_generate_c_type_with_overload_pybind11..TestClass.__init__rrqNr)rirjrkr5rrqrDrlrWs rqrlrOrr5r;rr)r*def __init__(self, arg0: str) -> None: ...r5def __init__(self, arg0: str, arg1: str) -> None: ...rz/def __init__(self, *args, **kwargs) -> Any: ...r) rrjrrirr5rr$rrbrs rD+test_generate_c_type_with_overload_pybind11z9StubgencSuite.test_generate_c_type_with_overload_pybind11s  --r2%cll3<<.Y\] ""     &ikR #     S__&1136S5TUrqcjGdd}g}t|jd}t|j|jg|}|j d|j |t d|dt|dd t|gd t|jjd gy) NceZdZdZddZy)LStubgencSuite.test_generate_c_type_with_overload_shiboken..TestClassz TestClass(self: TestClass, arg0: str) -> None TestClass(self: TestClass, arg0: str, arg1: str) -> None cyr_rrs rDr5zUStubgencSuite.test_generate_c_type_with_overload_shiboken..TestClass.__init__rrqNr)rirjrkrlr5rrqrDrlr^s    rqrlrOrr5r;rlrr)rrYrrZr) rrjrrirr5rrr$rrbrs rD+test_generate_c_type_with_overload_shibokenz9StubgencSuite.test_generate_c_type_with_overload_shibokens  --r2%cll3<<.Y\] ""      !)Y=  #      S__&1136S5TUrqNrd))rirjrkrlrrrwr{rrrrrrrrrrrrrrrrrrrr rrrrr r.r:r?rDrIrNrTr[r`rrqrDrnrns ?[C ]EGA0 I 0 : 99 J 99&9&9$V@9&J"9& J9&9&U$ 9\4.89&9&9&J&J& VD!VrqrnceZdZddZy) ArgSigSuitec tttddtttddtttdddtttddd d y) Nzasd"dsarz0ArgSig(name='asd"dsa', type=None, default=False)zasd'dsaz0ArgSig(name="asd'dsa", type=None, default=False)rrgz.ArgSig(name='func', type='str', default=False)T)rz-ArgSig(name='func', type='str', default=True))r$reprr rs rD test_reprzArgSigSuite.test_reprsi Y' (*]   Y' (*]  T&/02bc t4 5 ; rqNrd)rirjrkrerrqrDrbrbs  rqrbceZdZddZy)IsValidTypeSuitectdsJtdsJtdsJtdsJtdsJtdsJtdsJtdsJtd sJtd sJtd sJtd sJtd sJtdsJtdsJtdsJtdsJtdsJtdsJtdrJtdrJtdrJtdrJtdrJtdrJy)Nrrg Foo_Bar234rz List[int]zDict[str, int]rfz Literal[26]z Literal[0x1A]zLiteral["hello world"]zLiteral[b"hello world"]zLiteral[u"hello world"]z Literal[True]zLiteral[Color.RED]z Literal[None]z str | intzdict[str, int] | intztuple[str, ...]zWLiteral[26, 0x1A, "hello world", b"hello world", u"hello world", True, Color.RED, None]zfoo-barzx->yTrueFalsezx,yzx, y)rrs rDtest_is_valid_typez#IsValidTypeSuite.test_is_valid_type&ssU###U###\***Y'''[)))-...V$$$]+++_---566667776777_---1222_---[)))3444./// e   !+++ ((( ((( ))) ''' ((((rqNrd)rirjrkrlrrqrDrgrg%s)rqrgc,eZdZddZddZddZddZy)ModuleInspectSuitec t5}|jd}|J|jdk(sJ|jsJ|jJ|j dusJ|j gk(sJ dddy#1swYyxYw)Nr0F)rget_package_propertiesrr\r8r subpackagesr;r}ps rDtest_python_modulez%ModuleInspectSuite.test_python_moduleEs _ '((3A= =66Y& &&66M666> !>==E) ))==B& && ' ' 's A$A99Bc@t5}|jd}|J|jdk(sJ|jsJ|jsJ|j dusJ|j sJtd|j DsJ dddy#1swYyxYw)NrmFc3>K|]}|jdyw)z unittest.N)rP).0rs rD z9ModuleInspectSuite.test_python_package..XsLss~~k2Ls)rrprr\r8rrqallrrs rDtest_python_packagez&ModuleInspectSuite.test_python_packageOs _ M((4A= =66Z' ''66M666M6==E) ))== =LammLL LL M M Ms A?BBct5}|jd}|J|jdk(sJ|jJ|jdusJ|j gk(sJ dddy#1swYyxYw)N_socketT)rrprr8rrqrrs rD test_c_modulez ModuleInspectSuite.test_c_moduleZs| _ '((3A= =66Y& &&66> !>==D( ((==B& &&  ' ' 's AA++A4ct5}|jt5}|jddddt j dk(sJ dddy#1swY-xYw#1swYyxYw)Nzfoobar-non-existentz%No module named 'foobar-non-existent')r assertRaisesrrprg exception)r;r}rEs rDtest_non_existentz$ModuleInspectSuite.test_non_existentcsx _ O""<0 @A(()>? @q{{#'NN NN O O @ @ O Os!A+A"A+A( $A++A4Nrd)rirjrkrtrzr}rrrqrDrnrnDs' M'Orqrnctjj||jddd}tjj |s3|jdd}tjj |r|S|S)Nrrz.pyiz /__init__.pyi)r1r8r9r&r`)rArCrDalt_fnams rDr3r3jsc 77<<FNN3$<#=T!B CD 77>>$ <<8 77>>( #O Krq)rArgrCrgrerg)F __future__rrPos.pathr1rJr:rRr3rmtypesrtypingrr  mypy.errorsrmypy.moduleinspectrr mypy.stubdocr r r r r rrrrr mypy.stubgenrrrrrrr mypy.stubgencrr mypy.stubutilrrrrr r!mypy.test.datar"r#mypy.test.helpersr$r%r&TestCaser(rsrrrrqrhrlrnrbrgrnr3rrqrDrs:"   $:   G9ZZO'(++O'd8,,$w ;x((w ;t&5(++&5Rr4r4j v     Y VH%%Y Vx  (##  )x(()>#O**#OLrq