3 \CS @stddlmZddlmZddlZddlZddlZddlZddl Zddl Z ddl m Z ddl Z ddddd d d d d dddg ZeddZde_ddZddZd*dd Zd+dd Zed,ddZd-ddZejejjeddZGdd d ZGd d d Zy.ddlZdd!lmZd.d"d#ZejeeWne k r<YnXd$dZ!d/d%dZ"d&dZ#d'dZ$d(dZ%d)d Z&dS)0) namedtuple)singledispatchN) ModuleType get_importeriter_importers get_loader find_loader walk_packages iter_modulesget_data ImpImporter ImpLoader read_code extend_path ModuleInfozmodule_finder name ispkgz.A namedtuple with minimal info about a module.c CsLy |j}Wn4tk r>|j|}|dkr0dStjj||SX||SdS)N) find_specAttributeError find_module importlibutilspec_from_loader)findernamerloaderr/usr/lib64/python3.6/pkgutil.py _get_specs  rcCs6ddl}|jd}|tjjkr"dS|jd|j|S)Nr)marshalreadrr MAGIC_NUMBERload)streamrmagicrrrr(s    c #sifddxt||D]}|V|jryt|jWnNtk r\|dk rX||jYqtk r|dk r~||jnYqXttj|jddpg}fdd|D}t ||jd|EdHqWdS)NcSs||kr dSd||<dS)NTr)pmrrrseenRszwalk_packages..seen__path__csg|]}|s|qSrr).0r&)r(rr isz!walk_packages...) r ispkg __import__r ImportError Exceptiongetattrsysmodulesr )pathprefixonerrorinfor)r(rr 5s   ccsf|dkrt}n tt|}i}xB|D]:}x4t||D]&\}}||kr4d||<t|||Vq4Wq$WdS)N)rmapriter_importer_modulesr)r4r5Z importersyieldedirr-rrrr ns   cCst|dsgS|j|S)Nr )hasattrr )importerr5rrrr:s r:c cs0|jdkstjj|j rdSi}ddl}ytj|j}Wntk rRg}YnX|jx|D]}|j|}|dksb||krqbtjj|j|}d}| otjj|od|kr|}ytj|} Wntk rg} YnXx&| D]}|j|} | dkrd}PqWqb|rbd|krbd||<|||fVqbWdS)Nr__init__Fr,Tr8) r4osisdirinspectlistdirOSErrorsort getmodulenamejoin) r>r5r;rB filenamesfnmodnamer4r- dircontentssubnamerrr_iter_file_finder_moduless<       rMc Cs.tjtjdttjdaWdQRXdS)Nignoreimp)warningscatch_warnings simplefilterDeprecationWarningr import_modulerOrrrr _import_imps  rUc@s*eZdZd ddZd ddZd ddZdS) r NcCstjdtt||_dS)Nz5This emulation is deprecated, use 'importlib' instead)rPwarnrSrUr4)selfr4rrrr?szImpImporter.__init__c Cs~|jdd}||kr$|jdkr$dS|jdkr4d}ntjj|jg}ytj||\}}}Wntk rndSXt||||S)Nr,r8)splitr4r@realpathrOrr/r )rWfullnamer4rLfilefilenameetcrrrrs zImpImporter.find_moduler%c cs0|jdkstjj|j rdSi}ddl}ytj|j}Wntk rRg}YnX|jx|D]}|j|}|dksb||krqbtjj|j|}d}| otjj|od|kr|}ytj|} Wntk rg} YnXx&| D]}|j|} | dkrd}PqWqb|rbd|krbd||<|||fVqbWdS)Nrr?Fr,Tr8) r4r@rArBrCrDrErFrG) rWr5r;rBrHrIrJr4r-rKrLrrrr s<       zImpImporter.iter_modules)N)N)r%)__name__ __module__ __qualname__r?rr rrrrr s  c@sjeZdZdZZddZddZddZdd Zd d Z d d Z dddZ dddZ ddZ dddZdS)r NcCs.tjdtt||_||_||_||_dS)Nz5This emulation is deprecated, use 'importlib' instead)rPrVrSrUr\r]r[r^)rWr[r\r]r^rrrr?szImpLoader.__init__c Cs:|jztj||j|j|j}Wd|jr4|jjX|S)N)_reopenrO load_moduler\r]r^close)rWr[modrrrrcs  zImpLoader.load_modulec Cst|d }|jSQRXdS)Nrb)openr )rWpathnamer\rrrr "s zImpLoader.get_datacCsT|jrP|jjrP|jd}|tjkr2t|jd|_n|tjtjfkrPt|jd|_dS)Nrrf) r\closedr^rO PY_SOURCErgr] PY_COMPILED C_EXTENSION)rWmod_typerrrrb&s   zImpLoader._reopencCs0|dkr|j}n||jkr,td|j|f|S)Nz,Loader for module %s cannot handle module %s)r[r/)rWr[rrr _fix_name.s  zImpLoader._fix_namecCs|j|}|jdtjkS)Nri)rpr^rO PKG_DIRECTORY)rWr[rrr is_package6s zImpLoader.is_packagec Cs|j|}|jdkr|jd}|tjkrD|j|}t||jd|_nJ|tjkrv|j zt |j |_Wd|j j Xn|tj kr|jj|_|jS)Nriexec)rpcoder^rOrl get_sourcecompiler]rmrbrr\rdrq _get_delegateget_code)rWr[rosourcerrrrx:s       zImpLoader.get_codec Cs|j|}|jdkr|jd}|tjkrP|jz|jj|_Wd|jjXnd|tj krt j j |j ddrt|j ddd}|j|_WdQRXn|tjkr|jj|_|jS)Nrir8rjrXrX)rpryr^rOrlrbr\r rdrmr@r4existsr]rgrqrwru)rWr[rofrrrruKs      zImpLoader.get_sourcecCst|j}t|d}|jS)Nr?)r r]rr)rWrspecrrrrw]s  zImpLoader._get_delegatecCsH|j|}|jd}|tjkr*|jjS|tjtjtjfkrD|j SdS)Nri) rpr^rOrqrw get_filenamerlrmrnr])rWr[rorrrr}bs    zImpLoader.get_filename)N)N)N)r_r`rartryr?rcr rbrprrrxrurwr}rrrrr s    ) zipimporterc csttj|j}|j}t|}i}ddl}x|D]}|j|s@q0||djt j }t|dkr|djdr|d|krd||d<||ddfVt|dkrq0|j |d}|dkrq0|r0d|kr0||kr0d||<||dfVq0WdS) Nrrir8z __init__.pyTr?r,F) sorted zipimport_zip_directory_cachearchiver5lenrB startswithrYr@seprF) r>r5Zdirlist_prefixZplenr;rBrIrJrrriter_zipimport_modulesps*     rcCsnytj|}WnZtk rhxDtjD]6}y||}tjj||PWq&tk rZYq&Xq&Wd}YnX|S)N)r2path_importer_cacheKeyError path_hooks setdefaultr/)Z path_itemr> path_hookrrrrs    ccs|jdrdj|}t|d|krV|jdd}tj|}t|dd}|dkrhdSntjEdHtj }x|D]}t |VqnWdS)Nr,z'Relative module name {!r} not supportedrr)) rformatr/ rpartitionrrTr1r2 meta_pathr4r)r[msgZpkg_nameZpkgr4itemrrrrs      cCsn|tjkr tj|}|dkr dSt|trb|}t|dd}|dk rF|St|dddkrZdS|j}n|}t|S)N __loader____spec__)r2r3 isinstancerr1r_r)Zmodule_or_namemodulerr[rrrrs    cCs|jdrdj|}t|ytjj|}WnFttttfk rr}z"d}t|j|t |||WYdd}~XnX|dk r|j SdS)Nr,z'Relative module name {!r} not supportedz,Error while finding loader for {!r} ({}: {})) rrr/rrrr TypeError ValueErrortyper)r[rr|Zexrrrrs  *cCst|ts|S|d}|dd}|jd\}}}|rbytj|j}Wqhttfk r^|SXntj}x:|D]0}t|t sqpt |}|dk rg} t |dr|j |} | dk r| j pg} nt |dr|j|\}} x| D]} | |kr|j| qWtjj||} tjj| rpy t| } Wn8tk rT}ztjjd| |fWYdd}~XqpX| Bx:| D]2}|jd}| sb|jdrqb|j|qbWWdQRXqpW|S)Nz.pkgr,rrzCan't open %s: %s  #)rlistrr2r3r)rrr4strrr=rsubmodule_search_locationsrappendr@rGisfilergrDstderrwriterstripr)r4rZ sname_pkgZparent_package_Z final_nameZ search_pathdirrportionsr|ZportionZpkgfiler{rlinerrrrsP!            cCstjj|}|dkrdS|j}|dks2t|d r6dStjj|pLtjj |}|dksbt|d rfdS|j d}|j dt j j|jt j j|}|j|S)Nr __file__/r)rrrrr=r2r3get _bootstrap_loadrYinsertr@r4dirnamerrGr )packageZresourcer|rrepartsZ resource_namerrrr Rs     )Nr%N)Nr%)r%)r%)r%)r%)' collectionsr functoolsrZ simplegenericrimportlib.utilimportlib.machineryr@Zos.pathr2typesrrP__all__r__doc__rrr r r:rMregister machinery FileFinderrUr r rr~rr/rrrrrr rrrrsP     9   ( Jc   ^