a 7êdg¯Šã@sØddlmZe d¡Ze d¡Ze d¡Ze d¡ZddlZddl Z ddl Z ddl Z ddl Z ddl mZddlZddlZddlZddlZGd d „d ƒZejeed\ZZGd d „d ƒZejeeeed \ZZGdd„dƒZejeed\ZZGdd„dƒZejeed\ZZGdd„dƒZ eje ed\Z!Z"Gdd„dƒZ#eje#ed\Z$Z%Gdd„dƒZ&eje&eeed\Z'Z(Gdd„dƒZ)eje)ed\Z*Z+Gdd„dƒZ,eje,ed\Z-Z.Gdd„dej/ƒZ)e0dkrÔe 1¡dS)é)Úutilz importlib.abcÚ importlibzimportlib.machineryzimportlib.utiléN)Úsupportc@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚDecodeSourceBytesTestsu string ='ü'cCs&|j d¡}| |j |¡|j¡dS)Núutf-8©ÚsourceÚencodeÚ assertEqualrÚ decode_source)ÚselfÚ source_bytes©rú9/usr/local/lib/python3.9/test/test_importlib/test_util.pyÚtest_ut8_defaults z'DecodeSourceBytesTests.test_ut8_defaultcCs,d|j}| d¡}| |j |¡|¡dS)Nz# coding=latin-1 zlatin-1r©r r rrrrÚtest_specified_encodings  z.DecodeSourceBytesTests.test_specified_encodingcCsBd |j|jg¡}| d¡}| |j |¡d |j|jg¡¡dS)Nz rÚ )Újoinr r r rr rrrrÚtest_universal_newlines!s  ÿz.DecodeSourceBytesTests.test_universal_newlinesN)Ú__name__Ú __module__Ú __qualname__r rrrrrrrrsrc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚModuleFromSpecTestscCsXGdd„dƒ}|j d|ƒ¡}| t¡|j |¡}Wdƒn1sJ0YdS)Nc@seZdZdd„ZdS)z9ModuleFromSpecTests.test_no_create_module..LoadercSsdS©Nr©r ÚmodulerrrÚ exec_module1szEModuleFromSpecTests.test_no_create_module..Loader.exec_moduleN)rrrrrrrrÚLoader0srÚtest)Ú machineryÚ ModuleSpecÚ assertRaisesÚ ImportErrorrÚmodule_from_spec©r rÚspecrrrrÚtest_no_create_module/s z)ModuleFromSpecTests.test_no_create_modulecCsRGdd„d|jjƒ}|j d|ƒ¡}|j |¡}| |tj¡|  |j |j ¡dS)Nc@seZdZdd„ZdS)zCModuleFromSpecTests.test_create_module_returns_None..LoadercSsdSrr)r r'rrrÚ create_module9szQModuleFromSpecTests.test_create_module_returns_None..Loader.create_moduleN©rrrr)rrrrr8srr ) Úabcrr!r"rr%ÚassertIsInstanceÚtypesÚ ModuleTyper rÚnamer&rrrÚtest_create_module_returns_None7s  z3ModuleFromSpecTests.test_create_module_returns_Nonecsjd‰Gdd„dtjƒ‰G‡‡fdd„d|jjƒ}|j d|ƒ¡}|j |¡}| |ˆ¡|  |j ˆ¡dS)Nz already setc@s eZdZdS)z.CustomModuleN)rrrrrrrÚ CustomModuleBsr1cseZdZ‡‡fdd„ZdS)z6ModuleFromSpecTests.test_create_module..Loadercsˆ|jƒ}ˆ|_|Sr)r/r©r r'r©r1r/rrr)Es zDModuleFromSpecTests.test_create_module..Loader.create_moduleNr*rr3rrrDsrr ) r-r.r+rr!r"rr%r,r rr&rr3rÚtest_create_module@s  z&ModuleFromSpecTests.test_create_modulecCs0|j dtƒ¡}|j |¡}| |j|j¡dS©Nr )r!r"Úobjectrr%r rr/r2rrrÚ test___name__Ns z!ModuleFromSpecTests.test___name__cCs.|j dtƒ¡}|j |¡}| |j|¡dSr5)r!r"r6rr%r Ú__spec__r2rrrÚ test___spec__Ss z!ModuleFromSpecTests.test___spec__cCs2tƒ}|j d|¡}|j |¡}| |j|¡dSr5)r6r!r"rr%ÚassertIsÚ __loader__)r Úloaderr'rrrrÚtest___loader__Xs z#ModuleFromSpecTests.test___loader__cCs0|j dtƒ¡}|j |¡}| |j|j¡dS)Nztest.pkg)r!r"r6rr%r Ú __package__Úparentr2rrrÚtest___package__^s z$ModuleFromSpecTests.test___package__cCs4|jjdtƒdd}|j |¡}| |j|j¡dS)Nr T)Ú is_package)r!r"r6rr%r Ú__path__Úsubmodule_search_locationsr2rrrÚ test___path__cs z!ModuleFromSpecTests.test___path__cCs:|jjdtƒdd}d|_|j |¡}| |j|j¡dS)Nr ú some/path)ÚoriginT) r!r"r6Ú has_locationrr%r Ú__file__rFr2rrrÚ test___file__hs z!ModuleFromSpecTests.test___file__cCs<|j dtƒ¡}d|_d|_|j |¡}| |j|j¡dS)Nr rET) r!r"r6ÚcachedrGrr%r Ú __cached__r2rrrÚtest___cached__ns  z#ModuleFromSpecTests.test___cached__N) rrrr(r0r4r7r9r=r@rDrIrLrrrrr-s r)r+r!rc@sleZdZdZedd„ƒZdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)ÚModuleForLoaderTestsz+Tests for importlib.util.module_for_loader.cCsDt ¡(t dt¡|j |¡WdƒS1s60YdS)NÚignore)ÚwarningsÚcatch_warningsÚ simplefilterÚDeprecationWarningrÚmodule_for_loader)ÚclsÚfuncrrrrSs  z&ModuleForLoaderTests.module_for_loaderc Csrt ¡Vt dt¡| t¡ |j dd„¡}Wdƒn1sF0YWdƒn1sd0YdS)NÚerrorcSs|Srr)ÚxrrrÚŠóz3ModuleForLoaderTests.test_warning..)rOrPrQrRr#rrS)r rUrrrÚ test_warning…s   z!ModuleForLoaderTests.test_warningcCs| dd„¡}|||ƒS)NcSs|SrrrrrrrXrYz4ModuleForLoaderTests.return_module..)rS)r r/ÚfxnrrrÚ return_moduleŒsz"ModuleForLoaderTests.return_modulecCs8dd„}| |¡}z|||ƒWnty2Yn0dS)NcSst‚dSr)r$rrrrÚto_wrap‘sz5ModuleForLoaderTests.raise_exception..to_wrap)rSr$)r r/r]r[rrrÚraise_exceptions   z$ModuleForLoaderTests.raise_exceptioncCsfd}t |¡(| |¡}| |tj¡Wdƒn1s<0Y| |tj¡|  |j |¡dS©Núa.b.c) rÚuncacher\ÚassertInÚsysÚmodulesr,r-r.r r)r Ú module_namerrrrÚtest_new_module™s   ,z$ModuleForLoaderTests.test_new_modulecs¢G‡fdd„dƒ}d}t d¡}d|_d|_t |¡X|tj|<|ƒ}| |¡}ˆ  |tj|¡ˆ  |j|¡ˆ  |j|¡Wdƒn1s”0YdS)Ncs"eZdZdd„Z”jdd„ƒZdS)z4ModuleForLoaderTests.test_reload..FakeLoadercSsdS)NTr©r r/rrrrA¦sz?ModuleForLoaderTests.test_reload..FakeLoader.is_packagecSs|SrrrrrrÚ load_module¨sz@ModuleForLoaderTests.test_reload..FakeLoader.load_moduleN)rrrrArSrhr©r rrÚ FakeLoader¥srjr`é*) r-r.r;r>rrarcrdrhr:r )r rjr/rr<Zreturned_modulerrirÚ test_reload£s    z ModuleForLoaderTests.test_reloadcCsJd}t |¡(| |¡| |tj¡Wdƒn1s<0YdSr_)rrar^Ú assertNotInrcrdrgrrrÚtest_new_module_failure·s  z,ModuleForLoaderTests.test_new_module_failurecCsbd}t |¡}t |¡6|tj|<| |¡| |tj|¡Wdƒn1sT0YdSr_)r-r.rrarcrdr^r:©r r/rrrrÚtest_reload_failure¿s     z(ModuleForLoaderTests.test_reload_failurecCs6dd„}| |¡}| |j|j¡| |j|j¡dS)NcSsdSrrrrrrr[ÉrYz6ModuleForLoaderTests.test_decorator_attrs..fxn)rSr rr©r r[ÚwrappedrrrÚtest_decorator_attrsÈs z)ModuleForLoaderTests.test_decorator_attrscCsvGdd„dtjƒ}d}||ƒ}t |¡:| |¡|tj|<| |¡}| ||¡Wdƒn1sh0YdS)Nc@seZdZdd„ZdS)z;ModuleForLoaderTests.test_false_module..FalseModulecSsdS)NFrrirrrÚ__bool__ÒrYzDModuleForLoaderTests.test_false_module..FalseModule.__bool__N©rrrrtrrrrÚ FalseModuleÑsrvÚmod) r-r.rraZ assertFalsercrdr\r:)r rvr/rZgivenrrrÚtest_false_moduleÎs    z&ModuleForLoaderTests.test_false_modulecsêG‡fdd„dƒ}d}t |¡L|dƒ}| |¡}ˆ |j|¡ˆ |j|¡ˆ |jd¡Wdƒn1sr0Yd}t |¡L|dƒ}| |¡}ˆ |j|¡ˆ |j|¡ˆ |j|¡Wdƒn1sÜ0YdS)Ncs*eZdZdd„Zdd„Z”jdd„ƒZdS)z.FakeLoadercSs ||_dSr©Z_pkg)r rArrrÚ__init__àszEModuleForLoaderTests.test_attributes_set..FakeLoader.__init__cSs|jSrryrgrrrrAâszGModuleForLoaderTests.test_attributes_set..FakeLoader.is_packagecSs|SrrrrrrrhäszHModuleForLoaderTests.test_attributes_set..FakeLoader.load_moduleN)rrrrzrArSrhrrirrrjßsrjúpkg.modFÚpkgzpkg.subT)rrarhr rr:r;r>)r rjr/r<rrrirÚtest_attributes_setÜs   ,  z(ModuleForLoaderTests.test_attributes_setN)rrrÚ__doc__Ú classmethodrSrZr\r^rfrlrnrprsrxr}rrrrrM{s    rMc@sHeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dS)ÚSetPackageTestsz%Tests for importlib.util.set_package.cst‡fdd„}|j |¡}t ¡"t dt¡|ƒWdƒn1sH0Y| tˆdƒ¡| |ˆj ¡dS)zcVerify the module has the expected value for __package__ after passing through set_package.csˆSrrr©rrrrXrYz(SetPackageTests.verify..rNNr>) rÚ set_packagerOrPrQrRÚ assertTrueÚhasattrr r>)r rÚexpectr[rrrrrÚverifys    $zSetPackageTests.verifycCs t d¡}d|_| |d¡dS)NrÚ©r-r.r>r†rrrrÚtest_top_level s zSetPackageTests.test_top_levelcCs(t d¡}dg|_d|_| |d¡dS)Nr|z)r-r.rBr>r†rrrrÚ test_packages zSetPackageTests.test_packagecCs t d¡}d|_| |d¡dS)Nr{r|rˆrrrrÚtest_submodules zSetPackageTests.test_submodulecCs.t d¡}t|dƒrt|dƒ| |d¡dS)Nrwr>r‡)r-r.r„Údelattrr†rrrrÚtest_setting_if_missing!s   z'SetPackageTests.test_setting_if_missingcCs*dD] }t d¡}||_| ||¡qdS)N)TFrwrˆ)r ÚvaluerrrrÚtest_leaving_alone(s z"SetPackageTests.test_leaving_alonecCsldd„}t ¡(t dt¡|j |¡}Wdƒn1s>0Y| |j|j¡| |j|j¡dS)NcSsdSrrrrrrr[0rYz1SetPackageTests.test_decorator_attrs..fxnrN) rOrPrQrRrr‚r rrrqrrrrs/s   *z$SetPackageTests.test_decorator_attrsN) rrrr~r†r‰rŠr‹rrrsrrrrr€þs r€c@s4eZdZdZedd„ƒZdd„Zdd„Zdd „Zd S) ÚSetLoaderTestsz"Tests importlib.util.set_loader().csG‡fdd„dƒ}|ˆj_|S)NcseZdZ”jjdd„ƒZdS)z/SetLoaderTests.DummyLoader..DummyLoadercSs|jSrrrrrrrhEsz;SetLoaderTests.DummyLoader..DummyLoader.load_moduleN)rrrrÚ set_loaderrhrrirrÚ DummyLoaderDsr’)Ú __class__r’)r r’rrirr’AszSetLoaderTests.DummyLoadercCs~| ¡}t d¡|_z |j`Wnty0Yn0t ¡0t dt ¡|  ||  d¡j¡Wdƒn1sp0YdS©NÚblahrN) r’r-r.rr;ÚAttributeErrorrOrPrQrRr rh©r r<rrrÚtest_no_attributeKs     z SetLoaderTests.test_no_attributecCsh| ¡}t d¡|_d|j_t ¡0t dt¡|  ||  d¡j¡Wdƒn1sZ0YdSr”© r’r-r.rr;rOrPrQrRr rhr—rrrÚtest_attribute_is_NoneVs    z%SetLoaderTests.test_attribute_is_NonecCsh| ¡}t d¡|_d|j_t ¡0t dt¡|  d|  d¡j¡Wdƒn1sZ0YdS)Nr•rkrNr™r—rrrÚtest_not_reset^s    zSetLoaderTests.test_not_resetN) rrrr~Úpropertyr’r˜ršr›rrrrr=s   rc@s@eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS)ÚResolveNameTestsz$Tests importlib.util.resolve_name().cCs| d|j dd¡¡dS)NÚbacon©r rÚ resolve_namerirrrÚ test_absolutepszResolveNameTests.test_absolutecCs| d|j dd¡¡dS)NržÚspamrŸrirrrÚtest_absolute_within_packagetsz-ResolveNameTests.test_absolute_within_packagecCs<| t¡|j dd¡Wdƒn1s.0YdS)Nú.baconr‡©r#r$rr rirrrÚtest_no_packagexs z ResolveNameTests.test_no_packagecCs| d|j dd¡¡dS)Nzspam.eggs.baconr¤ú spam.eggsrŸrirrrÚtest_in_package}s ÿz ResolveNameTests.test_in_packagecCs| d|j dd¡¡dS)Nz spam.baconú..baconr§rŸrirrrÚtest_other_package‚s ÿz#ResolveNameTests.test_other_packagecCs<| t¡|j dd¡Wdƒn1s.0YdS)Nr©r¢r¥rirrrÚ test_escape‡s zResolveNameTests.test_escapeN) rrrr~r¡r£r¦r¨rªr«rrrrrlsrc@szeZdZGdd„dƒZdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)Ú FindSpecTestsc@seZdZeddd„ƒZdS)zFindSpecTests.FakeMetaFinderNcCs |||fSrr)r/ÚpathÚtargetrrrÚ find_spec•sz&FindSpecTests.FakeMetaFinder.find_spec)NN)rrrÚ staticmethodr¯rrrrÚFakeMetaFinder”sr±cCs|d}t |¡Zt |¡}d}|j ||¡}||_||_|tj |<|j  |¡}|  ||¡Wdƒn1sn0YdS©NÚsome_modz a loader!) rrar-r.r!r"r;r8rcrdr¯r ©r r/rr<r'ÚfoundrrrÚtest_sys_modules˜s    zFindSpecTests.test_sys_modulescCszd}t |¡Xt |¡}|`d}|j ||¡}||_|tj |<|j  |¡}|  ||¡Wdƒn1sl0YdSr²) rrar-r.r;r!r"r8rcrdr¯r r´rrrÚ#test_sys_modules_without___loader__¤s    z1FindSpecTests.test_sys_modules_without___loader__c Cs‚d}t |¡`t |¡}d|_|tj|<| t¡|j  |¡Wdƒn1sV0YWdƒn1st0YdS©Nr³) rrar-r.r8rcrdr#Ú ValueErrorr¯rorrrÚtest_sys_modules_spec_is_None°s    z+FindSpecTests.test_sys_modules_spec_is_NonecCsrd}t |¡Pt |¡}|j |d¡}||_|tj|<|j  |¡}|  ||¡Wdƒn1sd0YdSr¸) rrar-r.r!r"r8rcrdr¯r )r r/rr'rµrrrÚtest_sys_modules_loader_is_None¹s    z-FindSpecTests.test_sys_modules_loader_is_Nonec Cs˜d}t |¡vt |¡}z|`Wnty4Yn0|tj|<| t ¡|j  |¡Wdƒn1sl0YWdƒn1sŠ0YdSr¸) rrar-r.r8r–rcrdr#r¹r¯rorrrÚ test_sys_modules_spec_is_not_setÃs     z.FindSpecTests.test_sys_modules_spec_is_not_setc Cs|d}t |¡Ztj|jgd*| |ddf|j |¡¡Wdƒn1sP0YWdƒn1sn0YdS)Nr³)Ú meta_path)rraZ import_stater±r r¯rgrrrÚ test_successÏs    ÿzFindSpecTests.test_successcCs| |j d¡¡dS)NZnevergoingtofindthismodule)Z assertIsNonerr¯rirrrÚ test_nothingÖszFindSpecTests.test_nothingcCs d}d}tj|ddv}t |||¡\}}|j |¡}| |d¡| |ttjƒ¡|  |ttjƒ¡|j |¡}|  ||¡Wdƒn1s’0YdS©Nr¢ÚhamT©r|© rÚ temp_moduleÚ submoduler¯Ú assertIsNotrbÚsortedrcrdrmr ©r r/ÚsubnameÚpkg_dirÚfullnameÚ_r'Ú spec_againrrrÚtest_find_submoduleÚs   z!FindSpecTests.test_find_submodulecCs¬d}d}tj|dd‚}|j |¡t |||¡\}}|j |¡}| |d¡| |tt j ƒ¡|  |tt j ƒ¡|j |¡}|  ||¡Wdƒn1sž0YdSrÀ) rrÄÚinitÚ import_modulerÅr¯rÆrbrÇrcrdrmr rÈrrrÚ+test_find_submodule_parent_already_importedçs    z9FindSpecTests.test_find_submodule_parent_already_importedc Csªd}d}tj|dd€}t |||¡\}}d|}|j ||¡}| |d¡| |ttjƒ¡|  |ttjƒ¡|j |¡}|  ||¡Wdƒn1sœ0YdS©Nr¢rÁTrÂÚ.rÃ) r r/rÉrÊrËrÌÚrelnamer'rÍrrrÚtest_find_relative_moduleõs  z'FindSpecTests.test_find_relative_modulec Cs®d}d}tj|dd„}t |||¡\}}d|}| t¡|j |¡Wdƒn1s^0Y| |ttj ƒ¡| |ttj ƒ¡Wdƒn1s 0YdSrÒ) rrÄrÅr#r$r¯rmrÇrcrd)r r/rÉrÊrËrÌrÔrrrÚ)test_find_relative_module_missing_packages *z7FindSpecTests.test_find_relative_module_missing_packagecCs:| t¡|j d¡Wdƒn1s,0YdS)Nz module.name)r#ÚModuleNotFoundErrorrr¯rirrrÚtest_find_submodule_in_modules z+FindSpecTests.test_find_submodule_in_moduleN)rrrr±r¶r·rºr»r¼r¾r¿rÎrÑrÕrÖrØrrrrr¬’s       r¬)rÏrr!c@seZdZdd„Zdd„ZdS)ÚMagicNumberTestscCs| t|jjƒd¡dS)Né)r ÚlenrÚ MAGIC_NUMBERrirrrÚ test_lengthszMagicNumberTests.test_lengthcCs| |jj d¡¡dS)Ns )rƒrrÜÚendswithrirrrÚtest_incorporates_rn!sz%MagicNumberTests.test_incorporates_rnN)rrrrÝrßrrrrrÙsrÙc@s¬eZdZdZejjZe  ejjdud¡dd„ƒZ dd„Z dd „Z d d „Z d d „Zdd„Zdd„Zdd„Zdd„Zdd„Ze ejdkoŽejdkd¡dd„ƒZe  ejjdud¡dd„ƒZe  ejjdud¡d d!„ƒZd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Z d.d/„Z!d0d1„Z"d2d3„Z#e  ejjdud¡d4d5„ƒZ$e  ejjdud¡d6d7„ƒZ%e  ejjdud¡d8d9„ƒZ&e  ejjdud¡d:d;„ƒZ'e  ejjdud¡dÚ PEP3147TestszMTests of PEP 3147-related functions: cache_from_source and source_from_cache.Nz1requires sys.implementation.cache_tag not be Nonec CsJtj dddd¡}tj ddddd |j¡¡}| |jj|dd|¡dS© NÚfooÚbarÚbazúqux.pyÚ __pycache__ú qux.{}.pycr‡©Ú optimization©Úosr­rÚformatÚtagr rÚcache_from_source©r r­r…rrrÚtest_cache_from_source1s ÿÿz#PEP3147Tests.test_cache_from_sourcec Csjt tjdd¡F| t¡|j d¡Wdƒn1s>0YWdƒn1s\0YdS)NÚ cache_tagz whatever.py)rÚ swap_attrrcÚimplementationr#ÚNotImplementedErrorrrîrirrrÚ#test_cache_from_source_no_cache_tag<s z0PEP3147Tests.test_cache_from_source_no_cache_tagcCsBtj dd¡}tj ddd |j¡¡}| |jj|dd|¡dS)Nzfoo.barÚfileræz file{}.pycr‡rèrêrïrrrÚtest_cache_from_source_no_dotBs  ÿÿz*PEP3147Tests.test_cache_from_source_no_dotc Cs2tj dddd¡}t ¡^t d¡| |j |d¡|jj|dd¡| |j |d ¡|jj|d d¡Wdƒn1s~0Yt ¡Œt d ¡|  t ¡|j |d¡Wdƒn1sÊ0Y|  t ¡|j |d ¡Wdƒn1s0YWdƒn1s$0YdS) NrârãrärårNFrrèTr‡rV) rër­rrOrPrQr rrîr#rR©r r­rrrÚ%test_cache_from_source_debug_overrideJs  ÿÿ"   , z2PEP3147Tests.test_cache_from_source_debug_overridecCs6d}tj dd |j¡¡}| |jj|dd|¡dS©Núfoo.pyræz foo.{}.pycr‡rèrêrïrrrÚtest_cache_from_source_cwd[s ÿz'PEP3147Tests.test_cache_from_source_cwdc CsÔtj ddd¡}Gdd„dƒ}t ¡št d¡| |j |g¡|jj|dd¡| |j |d g¡|jj|d d¡|  t ¡ |j d |ƒ¡Wdƒn1s¨0YWdƒn1sÆ0YdS) Nrârãzbaz.pyc@seZdZdd„ZdS)z=PEP3147Tests.test_cache_from_source_override..BearishcSst‚dSr)Ú RuntimeErrorrirrrrthrYzFPEP3147Tests.test_cache_from_source_override..Bearish.__bool__NrurrrrÚBearishgsrþrNrrèér‡z/foo/bar/baz.py) rër­rrOrPrQr rrîr#rý)r r­rþrrrÚtest_cache_from_source_overrideas  ÿÿ z,PEP3147Tests.test_cache_from_source_overridecCs6d}tj dd |j¡¡}| |jj|dd|¡dSrúrêrïrrrÚ0test_cache_from_source_optimization_empty_stringss ÿz=PEP3147Tests.test_cache_from_source_optimization_empty_stringcCs|d}tjj}tj dd |j¡¡}|dkr4|d}n,|dkrL|d |¡}nd |¡}| |¡|  |j j |dd |¡dS) Nrûræúfoo.{}rú.pycéú .opt-{}.pycz){!r} is a non-standard optimization levelrè) rcÚflagsÚoptimizerër­rrìríZskipTestr rrî)r r­Zoptimization_levelÚ almost_expectr…ÚmsgrrrÚ(test_cache_from_source_optimization_Nonezs   ÿz5PEP3147Tests.test_cache_from_source_optimization_NonecCs¦d}tjtj}tj dd |j¡¡}|jj ||d}|  ||d |¡¡|  |jj |dd|d¡|  t ¡ |jj |ddWdƒn1s˜0YdS) Nrûrærrèrrkz .opt-42.pycz path/is/bad) ÚstringÚ ascii_lettersÚdigitsrër­rrìrírrîr r#r¹)r r­Zvalid_charactersrZgotrrrÚ'test_cache_from_source_optimization_setŠs  ÿÿ z4PEP3147Tests.test_cache_from_source_optimization_setc Csrt ¡Vt d¡| t¡"|jjddddWdƒn1sF0YWdƒn1sd0YdS)NrNrûFr‡rè)rOrPrQr#Ú TypeErrorrrîrirrrÚ;test_cache_from_source_debug_override_optimization_both_set›s   zHPEP3147Tests.test_cache_from_source_debug_override_optimization_both_setú\ú/z/test meaningful only where os.altsep is definedcCs$| |jjdddd |j¡¡dS)Nz\foo\bar\baz/qux.pyr‡rèz#\foo\bar\baz\__pycache__\qux.{}.pyc)r rrîrìrírirrrÚ)test_sep_altsep_and_sep_cache_from_source¢s þz6PEP3147Tests.test_sep_altsep_and_sep_cache_from_sourcec CsHt dddd¡}tj ddddd |j¡¡}| |jj |dd|¡dSrá) ÚpathlibÚPurePathrër­rrìrír rrîrïrrrÚ$test_cache_from_source_path_like_argªs ÿÿz1PEP3147Tests.test_cache_from_source_path_like_argz4requires sys.implementation.cache_tag to not be Nonec CsFtj ddddd |j¡¡}tj dddd¡}| |j |¡|¡dS©Nrârãrärærçrå©rër­rrìrír rÚsource_from_cacherïrrrÚtest_source_from_cache³s  ÿz#PEP3147Tests.test_source_from_cachec Csztj ddd¡}t tjdd¡F| t¡|j   |¡Wdƒn1sN0YWdƒn1sl0YdS)Nr•ræz whatever.pycrñ) rër­rrròrcrór#rôrrrørrrÚ#test_source_from_cache_no_cache_tag½s z0PEP3147Tests.test_source_from_cache_no_cache_tagcCs| t|jjd¡dS)Nz/foo/bar/bazqux.pyc©r#r¹rrrirrrÚtest_source_from_cache_bad_pathÄs ÿz,PEP3147Tests.test_source_from_cache_bad_pathcCs| t|jjd¡dS)Nzfoo.cpython-32.pycrrirrrÚtest_source_from_cache_no_slashÊs ÿz,PEP3147Tests.test_source_from_cache_no_slashcCs| t|jjd¡dS)Nz__pycache__/foo.pycrrirrrÚ#test_source_from_cache_too_few_dotsÏs ÿz0PEP3147Tests.test_source_from_cache_too_few_dotscCs:| t¡|j d¡Wdƒn1s,0YdS)Nz(__pycache__/foo.cpython-32.opt-1.foo.pycrrirrrÚ$test_source_from_cache_too_many_dotsÔs ÿz1PEP3147Tests.test_source_from_cache_too_many_dotscCs| t|jjd¡dS)Nz"__pycache__/foo.cpython-32.foo.pycrrirrrÚtest_source_from_cache_not_optÙsþz+PEP3147Tests.test_source_from_cache_not_optcCs| t|jjd¡dS)Nz/foo/bar/foo.cpython-32.foo.pycrrirrrÚ$test_source_from_cache_no__pycache__ßsþz1PEP3147Tests.test_source_from_cache_no__pycache__cCs.tj dd |j¡¡}| |j |¡d¡dS)Nræzfoo.{}.opt-1.pycrûrrørrrÚ)test_source_from_cache_optimized_bytecodeåsz6PEP3147Tests.test_source_from_cache_optimized_bytecodecCsPtj dd |j¡¡}| t¡|j |¡Wdƒn1sB0YdS)Nræzfoo.{}.opt-.pyc) rër­rrìrír#r¹rrrørrrÚ+test_source_from_cache_missing_optimizationês z8PEP3147Tests.test_source_from_cache_missing_optimizationc CsDt ddddd |j¡¡}tj dddd¡}| |j  |¡|¡dSr) rrrìrírër­rr rrrïrrrÚ$test_source_from_cache_path_like_argðs   ÿz1PEP3147Tests.test_source_from_cache_path_like_argc s(tj tjjdd¡tj tjjdd¡tj tjjdd¡tjjg}d‰tjdkrrd‰‡fdd „|Dƒ}|d d g7}|D]¬}|j|d Šˆtj tjjd ddd¡}tj |d ddd |j¡¡}t  |¡(|  |jj |dd|¡Wdƒn1sø0YWdƒqv1s0YqvdS)NÚtmpÚbytecodeu☃ztrailing-slashr‡ÚntzC:csg|]}ˆ›|›‘qSrr)Ú.0Úprefix©ÚdriverrÚ szOPEP3147Tests.test_cache_from_source_respects_pycache_prefix..z \\?\C:\fooz\\localhost\c$\bar)r­rârãrärårçrè) rër­rÚsepr/ZsubTestrìrírÚtemporary_pycache_prefixr rî)r Zpycache_prefixesÚpycache_prefixr­r…rr+rÚ.test_cache_from_source_respects_pycache_prefixøs2ý  ÿ ÿ þ þz;PEP3147Tests.test_cache_from_source_respects_pycache_prefixc Cs¶tj tjjdd¡}tj dddd¡}tj t ¡¡dtjj}tj |tj t ¡|¡dddd|j›d ¡}t  |¡(|  |jj |d d |¡Wdƒn1s¨0YdS) Nr&r'rârãrärårúqux.rr‡rè) rër­rr.Ú splitdriveÚgetcwdÚrelpathrírr/r rî)r r0r­Úrootr…rrrÚ7test_cache_from_source_respects_pycache_prefix_relativesý þzDPEP3147Tests.test_cache_from_source_respects_pycache_prefix_relativec CsŒtj tjjdd¡}tj |dddd|j›d¡}tj tjjdddd¡}t |¡$| |j |¡|¡Wdƒn1s~0YdS) Nr&r'rârãrär2rrå© rër­rr.rírr/r r©r r0r­r…rrrÚ,test_source_from_cache_inside_pycache_prefix's ÿ z9PEP3147Tests.test_source_from_cache_inside_pycache_prefixc Cs†tj tjjdd¡}tj ddddd|j›d¡}tj dddd ¡}t |¡$| |j |¡|¡Wdƒn1sx0YdS) Nr&r'rârãrärær2rrår8r9rrrÚ-test_source_from_cache_outside_pycache_prefix4s ÿ z:PEP3147Tests.test_source_from_cache_outside_pycache_prefix))rrrr~rcrórñríÚunittestZskipIfrðrõr÷rùrürrr rrÚ skipUnlessrër.Úaltseprrrrrrrr r!r"r#r$r%r1r7r:r;rrrrrà+spÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿràc@s,eZdZdZe ejjdvd¡dd„ƒZ dS)rÙzA Test release compatibility issues relating to importlib )Ú candidateÚfinalz8only applies to candidate or final python release levelscCs2d}t tjjdd…d¡}d}| |||¡dS)a Each python minor release should generally have a MAGIC_NUMBER that does not change once the release reaches candidate status. Once a release reaches candidate status, the value of the constant EXPECTED_MAGIC_NUMBER in this test should be changed. This test will then check that the actual MAGIC_NUMBER matches the expected value for the release. In exceptional cases, it may be required to change the MAGIC_NUMBER for a maintenance release. In this case the change should be discussed in python-dev. If a change is required, community stakeholders such as OS package maintainers must be notified in advance. Such exceptional releases will then require an adjustment to this test case. ia NrÚlittleaèTo avoid breaking backwards compatibility with cached bytecode files that can't be automatically regenerated by the current user, candidate and final releases require the current importlib.util.MAGIC_NUMBER to match the expected magic number in this test. Set the expected magic number in this test to the current MAGIC_NUMBER to continue with the release. Changing the MAGIC_NUMBER for a maintenance release requires discussion in python-dev and notification of community stakeholders.)ÚintÚ from_bytesrrrÜr )r ZEXPECTED_MAGIC_NUMBERÚactualr rrrÚtest_magic_numberKs ÿ z"MagicNumberTests.test_magic_numberN) rrrr~r<r=rcÚ version_infoÚ releaselevelrErrrrrÙGs  þÚ__main__)2r‡rZimport_importlibr+rÏr!Zimportlib_utilÚimportlib.utilrrërr rcr rr-r<Z unittest.mockrOrZ test_bothZFrozen_DecodeSourceBytesTestsZSource_DecodeSourceBytesTestsrZFrozen_ModuleFromSpecTestsZSource_ModuleFromSpecTestsrMZFrozen_ModuleForLoaderTestsZSource_ModuleForLoaderTestsr€ZFrozen_SetPackageTestsZSource_SetPackageTestsrZFrozen_SetLoaderTestsZSource_SetLoaderTestsrZFrozen_ResolveNameTestsZSource_ResolveNameTestsr¬ZFrozen_FindSpecTestsZSource_FindSpecTestsrÙZFrozen_MagicNumberTestsZSource_MagicNumberTestsràZFrozen_PEP3147TestsZSource_PEP3147TestsZTestCaserÚmainrrrrÚsz       þJ ÿþ þ< þ, þ# þ ÿþ þ þ+