a 7źdgsIć@sZddlmZe d”Ze d”Ze d”ZddlZddlZddl m Z ddl Z ddl Z ddl Z Gdd „d ƒZejeed \ZZGd d „d ƒZGd d„deƒZejeed \ZZGdd„deƒZejeed \ZZGdd„dƒZejeeed\ZZGdd„dƒZejeed \ZZGdd„de jƒZ Gdd„dƒZ!eje!ed\Z"Z#e$dkrVe  %”dS)é)ŚutilŚ importlibzimportlib.utilzimportlib.machineryéN)Śsupportc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ŚImportModuleTestsc Csvt d”X}tj|gd*|j d”}| |jd”Wdƒn1sJ0YWdƒn1sh0YdS)NŚ top_level©Ś meta_path©Ś test_utilŚ mock_modulesŚ import_stateŚinitŚ import_moduleŚ assertEqualŚ__name__)ŚselfŚmockŚmodule©rś8/usr/local/lib/python3.9/test/test_importlib/test_api.pyŚtest_module_imports  z$ImportModuleTests.test_module_importc Csd}d |”}d |”}t ||”X}tj|gd*|j |”}| |j|”Wdƒn1sd0YWdƒn1s‚0YdS©NŚpkgś {0}.__init__z{0}.modr©Śformatr r r rrrr©rŚpkg_nameŚ pkg_long_nameŚnamerrrrrŚtest_absolute_package_imports   z.ImportModuleTests.test_absolute_package_importc Cs®d}d |”}d}d ||”}d |”}t ||”f}tj|gd8|j |”|j ||”}| |j|”Wdƒn1s‚0YWdƒn1s 0YdS)NrrŚmodz{0}.{1}z.{0}rr)rrrŚ module_nameZ absolute_nameZ relative_namerrrrrŚ$test_shallow_relative_package_import$s    z6ImportModuleTests.test_shallow_relative_package_importc Cs˜gd¢}tj|Žr}tj|gdD|j d”|j d”|j dd”}| |jd”Wdƒn1sl0YWdƒn1sŠ0YdS)N)ś a.__init__z a.b.__init__śa.crŚaśa.bz..cr&r )rŚmodulesrrrrrŚ!test_deep_relative_package_import1s   z3ImportModuleTests.test_deep_relative_package_importc Csžd}d |”}d |”}t ||”f}tj|gd8|j |”|j ||”}| |j|”Wdƒn1sr0YWdƒn1s0YdSrrrrrrŚ!test_absolute_import_with_package:s   z3ImportModuleTests.test_absolute_import_with_packagecCs:| t”|j d”Wdƒn1s,0YdS)Nz.support)Ś assertRaisesŚ TypeErrorrr©rrrrŚtest_relative_import_wo_packageFs z1ImportModuleTests.test_relative_import_wo_packagec sØd‰‡fdd„}‡fdd„}||dœ}ddg}tj|d |iŽJ}tj|gd ˆj d”Wdƒn1sp0YWdƒn1sŽ0Yˆ ˆd ”dS) Nrcsˆj d”dS)Nr()rrrr.rrŚload_aRsz2ImportModuleTests.test_loaded_once..load_acs ˆd7‰dS)Nrrr)Ś b_load_countrrŚload_bTsz2ImportModuleTests.test_loaded_once..load_b)r'r(r%r(Ś module_coderr)r r r rrr)rr0r2Ścoder)rr)r1rrŚtest_loaded_onceMs   Hz"ImportModuleTests.test_loaded_onceN) rŚ __module__Ś __qualname__rr!r$r*r+r/r5rrrrrs    r)rc@s@eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS)ŚFindLoaderTestsNc Csœd}t |”zt |”}d}||_|tj|<t ”(t  dt ”|j   |”}Wdƒn1sd0Y|  ||”Wdƒn1sŽ0YdS)NŚsome_modz a loader!Śignore)r ŚuncacheŚtypesŚ ModuleTypeŚ __loader__Śsysr)ŚwarningsŚcatch_warningsŚ simplefilterŚDeprecationWarningrŚ find_loaderr)rr rŚloaderŚfoundrrrŚtest_sys_moduleshs     *z FindLoaderTests.test_sys_modulesc Cs¶d}t |””t |”}d|_|tj|<| t”Pt   ”(t   dt ”|j  |”Wdƒn1sl0YWdƒn1sŠ0YWdƒn1sØ0YdS©Nr9r:)r r;r<r=r>r?r)r,Ś ValueErrorr@rArBrCrrD©rr rrrrŚtest_sys_modules_loader_is_Noneus      z/FindLoaderTests.test_sys_modules_loader_is_Nonec CsĢd}t |”Ŗt |”}z|`Wnty4Yn0|tj|<| t ”Pt   ”(t   dt ”|j |”Wdƒn1s‚0YWdƒn1s 0YWdƒn1s¾0YdSrH)r r;r<r=r>ŚAttributeErrorr?r)r,rIr@rArBrCrrDrJrrrŚ"test_sys_modules_loader_is_not_sets       z2FindLoaderTests.test_sys_modules_loader_is_not_setc Cs®d}t |”Œtj|jgd\t ”4t dt”| |df|j   |””Wdƒn1sd0YWdƒn1s‚0YWdƒn1s 0YdS)Nr9rr:© r r;r ŚFakeMetaFinderr@rArBrCrrrD)rr rrrŚ test_success‘s    zFindLoaderTests.test_successc Cs“d}d}t |”Žtj|jgd^t ”6t dt”| ||f|j   ||””Wdƒn1sj0YWdƒn1sˆ0YWdƒn1s¦0YdS)Nr9zpath to some placerr:rN)rr ŚpathrrrŚtest_success_pathšs     ’z!FindLoaderTests.test_success_pathcCsJt ”.t dt”| |j d””Wdƒn1s<0YdS)Nr:Znevergoingtofindthismodule)r@rArBrCŚ assertIsNonerrDr.rrrŚ test_nothing„s  zFindLoaderTests.test_nothing) rr6r7rOrGrKrMrPrRrTrrrrr8ds    r8c@seZdZGdd„dƒZdS)ŚFindLoaderPEP451Testsc@seZdZeddd„ƒZdS)z$FindLoaderPEP451Tests.FakeMetaFinderNcCstd |||f”S)NŚSource)Ś machineryŚ ModuleSpec)r rQŚtargetrrrŚ find_specÆsz.FindLoaderPEP451Tests.FakeMetaFinder.find_spec)NN)rr6r7Ś staticmethodrZrrrrrO®srON©rr6r7rOrrrrrU¬srUc@seZdZGdd„dƒZdS)ŚFindLoaderPEP302Testsc@seZdZeddd„ƒZdS)z$FindLoaderPEP302Tests.FakeMetaFinderNcCs||fS©Nr)r rQrrrŚ find_module¼sz0FindLoaderPEP302Tests.FakeMetaFinder.find_module)N)rr6r7r[r_rrrrrO»srONr\rrrrr]¹sr]c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)Ś ReloadTestsc Cs|dD]r}|j|dRt |”(|j |”}|j |”Wdƒn1sN0YWdƒq1sl0YqdS)N)ŚtokenizeŚtimeŚmarshal)r)ŚsubTestrŚ CleanImportrrŚreload)rr"rrrrŚtest_reload_modulesČs   zReloadTests.test_reload_modulesc Cs®dd„}tjdd|id}||tj|gdN|j d”}|j |”}tjd}| |j d”| |j d”Wdƒn1s‚0YWdƒn1s 0YdS)NcSs(ddl}t|ƒdƒ}d|_||jd<dS)Nrré)r?ŚtypeŚspamr))r?rrrrr4Šs z.ReloadTests.test_module_replaced..coder)r3rrh) r r r rrrfr?r)rrj)rr4rrŚreloadedŚactualrrrŚtest_module_replacedĻs’   z ReloadTests.test_module_replacedcCs|t d”^ddl}|j}|`|j |”}| ||”| tjd|”|  |jj |j ”Wdƒn1sn0YdS©Nr<r) rrer<r>rrfŚassertIsr?r)rrQ)rr<rErkrrrŚtest_reload_missing_loaderßs   z&ReloadTests.test_reload_missing_loadercCs~t d”`ddl}d|_|j ”|j |”}| |jd”| ||”| t j d|”Wdƒn1sp0YdSrn) rrer<r>rŚinvalidate_cachesrfŚ assertIsNotror?r))rr<rkrrrŚtest_reload_loader_replacedźs    z'ReloadTests.test_reload_loader_replacedc Csd}t d”ō}t d”Ęt |”˜|j ”tj  ||d”}|j   |”}|d||ddœ}t  |”|j  |”}t|ƒ ”}| d”}| d”} | dd”| | j|”| | j|”| |j|”| ||”|j ”tj  ||d”} |j   | ”}||| |tj | ”gdd œ}t |”t || ”|j |”} t| ƒ ”}| d”}| d”} | dd”| | j|”| | j|”| | |”| |j| ”d|_| ||”Wdƒn1sĢ0YWdƒn1sģ0YWdƒn1s 0YdS) Nrjz.pyŚ)rŚ __package__Ś__file__Ś __cached__Ś__doc__r>Ś__spec__Ś __builtins__ś __init__.py)rrurvrwŚ__path__rx)rŚtemp_cwdr r;Ś DirsOnSysPathrrqŚosrQŚjoinrŚcache_from_sourceZcreate_empty_filerŚvarsŚcopyŚpoprr rEŚdirnameŚmkdirŚrenamerfroZmaxDiff) rr ŚcwdrQŚcachedŚexpectedrŚnsrEŚspecŚ init_pathrkrrrŚtest_reload_location_changedõs\  ü          ū        z(ReloadTests.test_reload_location_changedc Csžd}t d”x}t d”Jt |”|j ”tj  ||d”}|j   |”}||dddœ}t  |”t |dƒ}| d”Wdƒn1s–0Y|j |”}t|ƒ ”}| d”} | d”} | d”} | d d”| | j|”| | j”| | ”| | j| ”| t| ƒttj |”gƒ”| t”| jWdƒn1sZ0Y| ||”|j ”tj  ||d ”} |j   | ”}||| |tj | ”gddd œ}t || ”|j |”} t| ƒ ”}| d”} | d”} | d d”| | j|”| | j| ”| | |”| | j| ”| ||”Wdƒn1sP0YWdƒn1sp0YWdƒn1s0YdS) Nrjz __init.py)rrurxrvŚwz eggs = Noner>r|ryrzr{)rrurvrwr|rxZeggs)rr}r r;r~rrqrrQr€rrr†ŚopenŚwriterr‚rƒr„rr ZassertIsNotNonerEŚsetr…r,rLr‡rfro)rr rˆZbad_pathr‰rŠZ init_filerr‹rErQrŒrrkrrrŚtest_reload_namespace_changed(sj  ż  (         ’ &    ś       z)ReloadTests.test_reload_namespace_changedcCspd}d}tj|ddF}t |||”\}}|j |”}|j |”}| ||”Wdƒn1sb0YdS)NrjŚhamT)r)r Z temp_moduleZ submodulerrrfro)rr ZsubnameZpkg_dirŚfullnameŚ_r”rkrrrŚtest_reload_submodulebs  z!ReloadTests.test_reload_submodulec Cs”d}t |”rt |”}tj|<|j |”}| |j ”|  t ”|j  |”Wdƒn1sh0YWdƒn1s†0YdS)Nrj) r r;r<r=r?r)rrrSryr,ŚModuleNotFoundErrorrfrJrrrŚtest_module_missing_specls    z$ReloadTests.test_module_missing_specN) rr6r7rgrmrprsrŽr“r—r™rrrrr`Ęs  3: r`)rrc@seZdZdd„Zdd„ZdS)ŚInvalidateCacheTestscs€Gdd„dƒ}d‰|ƒ‰|ƒ}tj dˆ”| ‡fdd„”|tjˆ<| ‡fdd„”|j ”| ˆj”| |j”dS)Nc@s$eZdZdd„Zdd„Zdd„ZdS)zGInvalidateCacheTests.test_method_called..InvalidatingNullFindercWs d|_dS)NF©Ścalled)rZignoredrrrŚ__init__ƒszPInvalidateCacheTests.test_method_called..InvalidatingNullFinder.__init__cWsdSr^r)rŚargsrrrr_…szSInvalidateCacheTests.test_method_called..InvalidatingNullFinder.find_modulecSs d|_dS)NTr›r.rrrrq‡szYInvalidateCacheTests.test_method_called..InvalidatingNullFinder.invalidate_cachesN)rr6r7rr_rqrrrrŚInvalidatingNullFinder‚srŸZ gobledeegookrcs tj ˆ”Sr^)r?Śpath_importer_cacheŚ __delitem__r©ŚkeyrrŚŽóz9InvalidateCacheTests.test_method_called..cs tj ˆ”Sr^)r?r Śremover)Śmeta_insrrr¤r„) r?r ŚinsertŚ addCleanupr rrqŚ assertTruerœ)rrŸZpath_insr)r£r§rŚtest_method_called€s   z'InvalidateCacheTests.test_method_calledcs.d‰dtjˆ<| ‡fdd„”|j ”dS)NZ gobbledeegookcstj ˆd”Sr^)r?r r„rr¢rrr¤™r„z:InvalidateCacheTests.test_method_lacking..)r?r r©rrqr.rr¢rŚtest_method_lacking•s z(InvalidateCacheTests.test_method_lackingN)rr6r7r«r¬rrrrrš~sršc@seZdZdd„ZdS)ŚFrozenImportlibTestscCstd}| |jjjd”dS)NrVŚFrozenImporter)rZassertNotEqualr>Ś __class__r)rZ source_initrrrŚtest_no_frozen_importlib¤s ’z-FrozenImportlibTests.test_no_frozen_importlibN)rr6r7r°rrrrr­¢sr­c@seZdZdd„Zdd„ZdS)Ś StartupTestsc Cs¢tj ”D]’\}}t|tjƒr |j|db| t|dƒd  |””|j j   |”rb|  |jd”n|j j  |”r~|  |jd”Wdƒq 1s’0Yq dS)N©r r>z!{!r} lacks a __loader__ attribute)r?r)ŚitemsŚ isinstancer<r=rdrŖŚhasattrrrWŚBuiltinImporterr_rrr>r®rJrrrŚtest_everyone_has___loader__°s  ’z)StartupTests.test_everyone_has___loader__c Csštj ”D]Š\}}t|tjƒr |j|dZ| t|dƒ”|j j   |”rZ|  |j d”n|j j  |”rv|  |j d”Wdƒq 1sŠ0Yq dS)Nr²ry)r?r)r³r“r<r=rdrŖrµrWr¶r_rrryr®rJrrrŚtest_everyone_has___spec__¼s z'StartupTests.test_everyone_has___spec__N)rr6r7r·rørrrrr±®s r±)rWŚ__main__)&rtrr Zimport_importlibrrWZos.pathrr?Śtestrr<Zunittestr@rZ test_bothZFrozen_ImportModuleTestsZSource_ImportModuleTestsr8rUZFrozen_FindLoaderPEP451TestsZSource_FindLoaderPEP451Testsr]ZFrozen_FindLoaderPEP302TestsZSource_FindLoaderPEP302Testsr`ZFrozen_ReloadTestsZSource_ReloadTestsršZFrozen_InvalidateCacheTestsZSource_InvalidateCacheTestsZTestCaser­r±ZFrozen_StartupTestsZSource_StartupTestsrŚmainrrrrŚsL     R žH ž ž6ž! ž  ž