a 7êdgAã@s ddlZddlmZddlmZddlZddlZddlZddlmZGdd„dƒZGdd„dej ƒZ Gd d „d ej ej ƒZ Gd d „d ej ƒZed krœe ¡dS)éN)Úabc)Úutiléc@seZdZdd„Zdd„ZdS)Ú CollectInitcOs||_||_dS©N)ÚargsÚkwargs)Úselfrr©r ú9/usr/local/lib/python3.9/test/test_importlib/test_lazy.pyÚ__init__ szCollectInit.__init__cCs|Srr ©r Úmoduler r r Ú exec_moduleszCollectInit.exec_moduleN)Ú__name__Ú __module__Ú __qualname__r rr r r r r src@seZdZdd„Zdd„ZdS)ÚLazyLoaderFactoryTestscCsDtj t¡}|dddd}|j}| d|j¡| ddi|j¡dS)Nú module nameú module pathÚkw)r)rr)rÚ LazyLoaderÚfactoryrÚloaderÚ assertEqualrr)r rZ lazy_loaderrr r r Ú test_inits  z LazyLoaderFactoryTests.test_initcCs:| t¡tj t¡Wdƒn1s,0YdSr)Ú assertRaisesÚ TypeErrorrrrÚobject©r r r r Útest_validation s z&LazyLoaderFactoryTests.test_validationN)rrrrr r r r r rs rc@s4eZdZdZdZdZd e¡Zd dd„Zdd„Z dS) ÚTestingImporterZlazy_loader_testÚchangedNzattr = 42; __name__ = {!r}cCs ||jkrdSt |t |¡¡Sr)Ú module_namerÚspec_from_loaderr)r ÚnameÚpathÚtargetr r r Ú find_spec-s zTestingImporter.find_speccCst|j|jƒ||_dSr)ÚexecÚ source_codeÚ__dict__Úloadedr r r r r2szTestingImporter.exec_module)N) rrrr#Ú mutated_namer,Úformatr*r(rr r r r r!&s   r!c@sfeZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dS)ÚLazyLoaderTestscCs8| t¡t t¡Wdƒn1s*0YdSr)rrrrrrr r r r9s zLazyLoaderTests.test_initNcCsrtƒ}|dur||_t tjt |¡¡}|j |¡}|durHt  tj¡}||_ |j|_ |j  |¡|  |j¡|Sr)r!r*rr$r#rrÚ create_moduleÚtypesÚ ModuleTypeÚ__spec__Ú __loader__rÚ assertIsNoner,)r r*rÚspecrr r r Ú new_module>sÿ    zLazyLoaderTests.new_modulec Cs¤tƒ}t |j¡Jtj|gdt |j¡}Wdƒn1sD0YWdƒn1sb0Y| |j¡|  |j |¡|  |j¡|  ||j¡dS)N)Ú meta_path) r!Ú test_utilÚuncacher#Z import_stateÚ importlibÚ import_moduler5r,rr4ZassertIsNotNone)r Zimporterrr r r Útest_e2eNsH  zLazyLoaderTests.test_e2ecCs| ¡}| tj|j¡dSr)r7rr!r-rr r r r Útest_attr_unchanged[sz#LazyLoaderTests.test_attr_unchangedcCs | ¡}d|_| d|j¡dS)Né*)r7Znew_attrrr r r r Ú test_new_attraszLazyLoaderTests.test_new_attrcCs | ¡}d|_| d|j¡dS)NZbogus)r7rrr r r r Útest_mutated_preexisting_attrgsz-LazyLoaderTests.test_mutated_preexisting_attrcCs | ¡}d|_| d|j¡dS)Né)r7Úattrrr r r r Útest_mutated_attrnsz!LazyLoaderTests.test_mutated_attrcCs | ¡}|`| t|dƒ¡dS)NrC)r7rCÚ assertFalseÚhasattrr r r r Útest_delete_eventual_attrusz)LazyLoaderTests.test_delete_eventual_attrcCs | ¡}|`| t|dƒ¡dS)Nr)r7rrErFr r r r Útest_delete_preexisting_attr{sz,LazyLoaderTests.test_delete_preexisting_attrc Cs‚t tj¡bt tj¡}|tjtj<| ¡}|  t d¡|j Wdƒn1sV0YWdƒn1st0YdS)NZ substituted) r9r:r!r#r1r2ÚsysÚmodulesr7ZassertRaisesRegexÚ ValueErrorr)r Z fresh_modulerr r r Útest_module_substitution_error€s   z.LazyLoaderTests.test_module_substitution_errorcCsJt tj¡*| ¡}|tjtj<|jWdƒn1s<0YdSr)r9r:r!r#r7rIrJrr r r r Útest_module_already_in_sysˆs z*LazyLoaderTests.test_module_already_in_sys)N)rrrrr7r=r>r@rArDrGrHrLrMr r r r r/7s  r/Ú__main__)r;rrrIr1ZunittestÚr9rZTestCaserÚMetaPathFinderÚLoaderr!r/rÚmainr r r r Ús    Y