ML i6ddlmZddlZddlmZmZmZddlmZddl m Z ddl m Z m Z ejjejj!e dZGdd e ZGd d e Zy) ) annotationsN)FindModuleCacheModuleNotFoundReason SearchPaths)Options) package_path)Suite assert_equal modulefinderceZdZddZddZddZddZddZddZddZ ddZ dd Z dd Z dd Z dd Zdd ZddZddZy)ModuleFinderSuitec tdtjjtdtjjtdtjjtdtjjtdtjjtdtjjtdtjjtdfdd |_t }d |_t|j d| |_ t }d |_t|j d| |_ y) Nnsx-pkg1nsx-pkg2nsx-pkg3nsy-pkg1nsy-pkg2pkg1pkg2 python_path mypy_pathr typeshed_pathTfscacheoptionsF) rospathjoin data_path search_pathsrnamespace_packagesrfmc_nsfmc_nons)selfrs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/test/testmodulefinder.pysetUpzModuleFinderSuite.setUps' Y 3 Y 3 Y 3 Y 3 Y 3 Y/ Y/  )%)"%d&7&7wW )%*"'(9(94QXY cn|jjd}ttj|y)zG If namespace_packages is False, we shouldn't find nsx nsxNr% find_moduler r NOT_FOUNDr& found_modules r' test__no_namespace_packages__nsxz2ModuleFinderSuite.test__no_namespace_packages__nsx%s)}}007 )33\Br)cn|jjd}ttj|y)zJ If namespace_packages is False, we shouldn't find nsx.a. nsx.aNr,r/s r'"test__no_namespace_packages__nsx_az4ModuleFinderSuite.test__no_namespace_packages__nsx_a,s)}}009 )33\Br)c|jjd}tjj tjj t dd}t||y)zL Find find pkg1/a.py for "a" with namespace_packages False. ara.pyN)r%r-rrabspathr r!r r&r0expecteds r'+test__no_namespace_packages__find_a_in_pkg1z=ModuleFinderSuite.test__no_namespace_packages__find_a_in_pkg13sE}}005 77??277<< 66#JKX|,r)c|jjd}tjj tjj t ddd}t||yNbr __init__.pyr$r-rrr8r r!r r9s r'+test__no_namespace_packages__find_b_in_pkg2z=ModuleFinderSuite.test__no_namespace_packages__find_b_in_pkg2;E{{..s3 77??277<< 63 #VWX|,r)c|jjd}tjj tjj t dd}t||y)z| There's no __init__.py in any of the nsx dirs, return the path to the first one found in mypypath. r+rNr@r9s r''test__find_nsx_as_namespace_pkg_in_pkg1z9ModuleFinderSuite.test__find_nsx_as_namespace_pkg_in_pkg1@sE {{..u5 77??277<< :u#MNX|,r)c |jjd}tjj tjj t dddd}t||y)zP Find nsx-pkg1/nsx/a/__init__.py for "nsx.a" in namespace mode. r3rr+r6r?Nr@r9s r'test__find_nsx_a_init_in_pkg1z/ModuleFinderSuite.test__find_nsx_a_init_in_pkg1IJ{{..w7 77??277<< :ucS`#abX|,r)c |jjd}tjj tjj t dddd}t||y)zP Find nsx-pkg2/nsx/b/__init__.py for "nsx.b" in namespace mode. znsx.brr+r>r?Nr@r9s r'test__find_nsx_b_init_in_pkg2z/ModuleFinderSuite.test__find_nsx_b_init_in_pkg2QrGr)c |jjd}tjj tjj t dddd}t||y)zK Find nsx-pkg3/nsx/c/c.py for "nsx.c.c" in namespace mode. znsx.c.crr+cc.pyNr@r9s r'test__find_nsx_c_c_in_pkg3z,ModuleFinderSuite.test__find_nsx_c_c_in_pkg3YsJ{{..y9 77??277<< :ucSY#Z[X|,r)c |jjd}tjj tjj t dddd}t||y)zG Prefer nsy-pkg1/a/__init__.pyi file over __init__.py. znsy.arnsyr6 __init__.pyiNr@r9s r'test__find_nsy_a__init_pyiz,ModuleFinderSuite.test__find_nsy_a__init_pyiasJ{{..w7 77??277<< :ucSa#bcX|,r)c |jjd}tjj tjj t dddd}t||y)z There is a nsy-pkg2/nsy/b.pyi, but also a nsy-pkg2/nsy/b/__init__.py. We expect to find the latter when looking up "nsy.b" as a package is preferred over a module. znsy.brrOr>r?Nr@r9s r'test__find_nsy_b__init_pyz+ModuleFinderSuite.test__find_nsy_b__init_pyisJ {{..w7 77??277<< :ucS`#abX|,r)c|jjd}tjj tjj t ddd}t||y)z There is a nsy-pkg2/nsy/c.pyi and nsy-pkg2/nsy/c.py We expect to find the former when looking up "nsy.b" as .pyi is preferred over .py. znsy.crrOzc.pyiNr@r9s r'test__find_nsy_c_pyiz&ModuleFinderSuite.test__find_nsy_c_pyissG {{..w7 77??277<< :ug#VWX|,r)c|jjd}tjj tjj t dd}t||y)Nr6rr7r@r9s r'test__find_a_in_pkg1z&ModuleFinderSuite.test__find_a_in_pkg1}sC{{..s3 77??277<< 66#JKX|,r)c|jjd}tjj tjj t ddd}t||yr=r@r9s r'test__find_b_init_in_pkg2z+ModuleFinderSuite.test__find_b_init_in_pkg2rBr)cn|jjd}ttj|y)Nd)r$r-r rr.r/s r'test__find_d_nowherez&ModuleFinderSuite.test__find_d_nowheres'{{..s3 )33\Br)NreturnNone)__name__ __module__ __qualname__r(r1r4r;rArDrFrIrMrQrSrUrWrYr\rr)r'r r sQZ.CC-- -------- - Cr)r c,eZdZddZddZddZddZy)ModuleFinderSitePackagesSuitectjjtjjtd|_tjj|j dtjj|j ddtjj|j dd|j f}t dtjjtdft|d|_ t}d |_ t|jd| |_ t}d |_ t|jd| |_y) Nzmodulefinder-site-packagesbaz..znot-a-directorymodulefinder-srcrrrTrF)rrrelpathr r package_dirrr!tupler"rr#rr$r%)r& package_pathsrs r'r(z#ModuleFinderSitePackagesSuite.setUps 77?? GGLL'C D  GGLL))5 1 GGLL))41B C GGLL))41C D     (ww||Iv68}-   )%)"%d&7&7wW )%*"'(9(94QXY r)ctjjtjj|jg|S)N)rrr8r rj)r&partss r'rz"ModuleFinderSitePackagesSuite.paths-wwrww||D,<,<EuEFFr)c &gd|jdfd|jddfd|jddfd|jdddfdtjfd tjfd tjfd tjfd tjfd tjfd|jdfd|jdddfd|jdddfdtjfd|jddfd|jddfd|jdddfd|jdddfdtjfd|jddfd|jddfd tjfd!tjfd"tjfd#tjfd$tjfd%tjfd&tjfd'|jd(d'dfd)|jd(d*dfd+|jd,d-d+dfd.|jd,d-d/dfd0tjfd1|jd2d3fd4tjj tjj td5df}|D]5\}}d6|zd7z}|jj|}t|||7y)8N ns_pkg_typedns_pkg_typed.ar7ns_pkg_typed.br>ns_pkg_typed.b.crLns_pkg_typed.a.a_varns_pkg_untypedns_pkg_untyped.ans_pkg_untyped.bns_pkg_untyped.b.cns_pkg_untyped.a.a_varns_pkg_w_stubsns_pkg_w_stubs.typedzns_pkg_w_stubs-stubstypedrPns_pkg_w_stubs.typed_inline typed_inliner?ns_pkg_w_stubs.untyped pkg_typed pkg_typed.a pkg_typed.b pkg_typed.b.cpkg_typed.a.a_varpkg_typed_w_stubspkg_typed_w_stubs-stubspkg_typed_w_stubs.spamspam.pyi pkg_untyped pkg_untyped.a pkg_untyped.bpkg_untyped.b.cpkg_untyped.a.a_var standalonestandalone.standalone_varbaz_pkgrf ns_baz_pkg.a ns_baz_pkg neighbor_pkgrgrhns_neighbor_pkg.ans_neighbor_pkgdoes_not_existfoo.bar foo-stubsbar.pyir6rFind() got {}; expected {}) rrr.FOUND_WITHOUT_TYPE_HINTSrr8r r!r$r-r r&casesmoduler:templateactuals r'test__packages_with_nsz4ModuleFinderSitePackagesSuite.test__packages_with_nss2 TYY~6 72 tyy@ A2 tyy= > 2  >3!G H 2 $%9%C%C D 2 3LL M2  !5!N!N O2  !5!N!N O2 "#7#P#P Q2 &';'T'T U2 tyy)9: ;2 $TYY/EwP^%_ `2 ". *NMJ !2 (&';'T'T U)2 ,$))K? @-2 .DIIk6: ;/2 0DIIk3 F G12 2dii S&A B32 4!"6"@"@ A52 8!$)),E~"V W92 :&tyy1JJ'W X;2 >0II J?2 @2KK LA2 B2KK LC2 D 4 M M NE2 F#$8$Q$Q RG2 J/HH IK2 L)*>*W*W XM2 P %MB CQ2 RTYYulFC DS2 TTYYt-?Q^_ `U2 V!$))D2DFWY_"` aW2 Z3== >[2 ^ +y9 :_2 b"''//"'',,y&&"IJ Kc2 f!& 5 FH'*AAH[[,,V4F 8 4  5r)c gdtjfdtjfdtjfdtjfdtjfdtjfdtjfdtjfd tjfd tjfd tjfd tjfd |jd ddfdtjfd|jddfd|jddfd|jdddfd|jdddfdtjfd|jddfd|jddfdtjfdtjfd tjfd!tjfd"tjfd#tjfd$tjfd%|jd&d%dfd'tjfd(|jd)d*d(dfd+tjfd,tjfd-|jd.d/fd0tjj tjj td1df}|D]5\}}d2|zd3z}|jj|}t|||7y)4Nrprqrrrsrtrurvrwrxryrzr{r}r~r?rrrr7rr>rrLrrrrPrrrrrrrrrrrfrrrgrhrrrrrr6rrr) rr.rrrr8r r!r%r-r rs r'test__packages_without_nsz7ModuleFinderSitePackagesSuite.test__packages_without_nss2 1;; <2 3== >2 3== > 2  !5!?!? @ 2 $%9%C%C D 2 3LL M2  !5!N!N O2  !5!N!N O2 "#7#P#P Q2 &';'T'T U2 3LL M2 $%9%R%R S2 ". *NMJ !2 (&';'T'T U)2 ,$))K? @-2 .DIIk6: ;/2 0DIIk3 F G12 2dii S&A B32 4!"6"@"@ A52 8!$)),E~"V W92 :&tyy1JJ'W X;2 >0II J?2 @2KK LA2 B2KK LC2 D 4 M M NE2 F#$8$Q$Q RG2 J/HH IK2 L)*>*W*W XM2 P %MB CQ2 R1;; [2 ^ +y9 :_2 b"''//"'',,y&&"IJ Kc2 f!& 5 FH'*AAH]]..v6F 8 4  5r)Nr])rnstrr^r)r`rarbr(rrrrr)r'rdrdsZ4G85t85r)rd) __future__rrmypy.modulefinderrrr mypy.optionsrmypy.test.configrmypy.test.helpersr r rrir r!r rdrr)r'rsZ" PP )1 GGOOBGGLL~F G |C|C~P5EP5r)