3 \CS� @stddlmZddlmZddlZddlZddlZddlZddl Zddl Z ddl m Z ddl Z ddddd d d d d dddg Zedd�Zde_dd�Zdd�Zd*dd �Zd+dd �Zed,dd��Zd-dd�Zejejje�dd�ZGdd �d �ZGd d �d �Zy.ddlZdd!lmZd.d"d#�Zejee�Wne k �r<YnXd$d�Z!d/d%d�Z"d&d�Z#d'd�Z$d(d�Z%d)d �Z&dS)0�)� namedtuple)�singledispatchN)� ModuleType� get_importer�iter_importers� get_loader� find_loader� walk_packages� iter_modules�get_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_spec�AttributeError� find_module� importlib�util�spec_from_loader)�finder�namer�loader�r�/usr/lib64/python3.6/pkgutil.py� _get_specs  rcCs6ddl}|jd�}|tjjkr"dS|jd�|j|�S)Nr��)�marshal�readrr� MAGIC_NUMBER�load)�streamr�magicrrrr(s    �c #s�ifdd��x�t||�D]�}|V|jryt|j�WnNtk r\|dk rX||j�Yqtk r�|dk r~||j�n�YqXttj|jdd�p�g}�fdd�|D�}t ||jd|�EdHqWdS)NcSs||kr dSd||<dS)NTr)�p�mrrr�seenRszwalk_packages..seen�__path__csg|]}�|�s|�qSrr)�.0r&)r(rr� isz!walk_packages..�.) r �ispkg� __import__r� ImportError� Exception�getattr�sys�modulesr )�path�prefix�onerror�infor)r(rr 5s   ccsf|dkrt�}n tt|�}i}xB|D]:}x4t||�D]&\}}||kr4d||<t|||�Vq4Wq$WdS)N�)r�mapr�iter_importer_modulesr)r4r5Z importers�yielded�irr-rrrr ns   cCst|d�sgS|j|�S)Nr )�hasattrr )�importerr5rrrr:�s r:c cs0|jdkstjj|j� rdSi}ddl}ytj|j�}Wntk rRg}YnX|j�x�|D]�}|j|�}|dksb||kr�qbtjj|j|�}d}| o�tjj|�o�d|k�r|}ytj|�} Wntk r�g} YnXx&| D]}|j|�} | dkr�d}Pq�Wqb|rbd|krbd||<|||fVqbWdS)Nr�__init__Fr,Tr8) r4�os�isdir�inspect�listdir�OSError�sort� getmodulename�join) r>r5r;rB� filenames�fn�modnamer4r-� dircontents�subnamerrr�_iter_file_finder_modules�s<       rMc Cs.tj��tjdt�tjd�aWdQRXdS)N�ignore�imp)�warnings�catch_warnings� simplefilter�DeprecationWarningr� import_modulerOrrrr� _import_imp�s  rUc@s*eZdZd dd�Zd dd�Zd dd�ZdS) r NcCstjdt�t�||_dS)Nz5This emulation is deprecated, use 'importlib' instead)rP�warnrSrUr4)�selfr4rrrr?�szImpImporter.__init__c Cs~|jd�d}||kr$|jdkr$dS|jdkr4d}ntjj|j�g}ytj||�\}}}Wntk rndSXt||||�S)Nr,r8�����)�splitr4r@�realpathrOrr/r )rW�fullnamer4rL�file�filename�etcrrrr�s zImpImporter.find_moduler%c cs0|jdkstjj|j� rdSi}ddl}ytj|j�}Wntk rRg}YnX|j�x�|D]�}|j|�}|dksb||kr�qbtjj|j|�}d}| o�tjj|�o�d|k�r|}ytj|�} Wntk r�g} YnXx&| D]}|j|�} | dkr�d}Pq�Wqb|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@sjeZdZdZZdd�Zdd�Zdd�Zdd �Zd d �Z d d �Z ddd�Z ddd�Z dd�Z ddd�ZdS)r NcCs.tjdt�t�||_||_||_||_dS)Nz5This emulation is deprecated, use 'importlib' instead)rPrVrSrUr\r]r[r^)rWr[r\r]r^rrrr?szImpLoader.__init__c Cs:|j�ztj||j|j|j�}Wd|jr4|jj�X|S)N)�_reopenrO� load_moduler\r]r^�close)rWr[�modrrrrcs  zImpLoader.load_modulec Cst|d�� }|j�SQRXdS)N�rb)�openr )rW�pathnamer\rrrr "s zImpLoader.get_datacCsT|jrP|jjrP|jd}|tjkr2t|jd�|_n|tjtjfkrPt|jd�|_dS)N��rrf) r\�closedr^rO� PY_SOURCErgr]� PY_COMPILED� C_EXTENSION)rW�mod_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�|j�j�|_|jS)Nri�exec)rp�coder^rOrl� get_source�compiler]rmrbrr\rdrq� _get_delegate�get_code)rWr[ro�sourcerrrrx:s       zImpLoader.get_codec Cs�|j|�}|jdkr�|jd}|tjkrP|j�z|jj�|_Wd|jj�Xnd|tj kr�t j j |j dd��r�t|j dd�d��}|j�|_WdQRXn|tjkr�|j�j�|_|jS)Nrir8rjrXrX)rpryr^rOrlrbr\r rdrmr@r4�existsr]rgrqrwru)rWr[ro�frrrruKs      zImpLoader.get_sourcecCst|j�}t|d�}|jS)Nr?)r r]rr)rWr�specrrrrw]s  zImpLoader._get_delegatecCsH|j|�}|jd}|tjkr*|j�j�S|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 cs�ttj|j�}|j}t|�}i}ddl}x�|D]�}|j|�s@q0||d�jt j �}t|�dkr�|djd�r�|d|kr�d||d<||ddfVt|�dkr�q0|j |d�}|dkr�q0|r0d|kr0||kr0d||<||dfVq0WdS) Nrrir8z __init__.pyTr?r,F) �sorted� zipimport�_zip_directory_cache�archiver5�lenrB� startswithrYr@�seprF) r>r5Zdirlist�_prefixZplenr;rBrIrJrrr�iter_zipimport_modulesps*     r�cCsnytj|}WnZtk rhxDtjD]6}y||�}tjj||�PWq&tk rZYq&Xq&Wd}YnX|S)N)r2�path_importer_cache�KeyError� path_hooks� setdefaultr/)Z path_itemr>� path_hookrrrr�s    ccs�|jd�rdj|�}t|��d|krV|jd�d}tj|�}t|dd�}|dkrhdSntjEdHtj }x|D]}t |�VqnWdS)Nr,z'Relative module name {!r} not supportedrr)) r��formatr/� rpartitionrrTr1r2� meta_pathr4r)r[�msgZpkg_nameZpkgr4�itemrrrr�s      cCsn|tjkr tj|}|dkr dSt|t�rb|}t|dd�}|dk rF|St|dd�dkrZdS|j}n|}t|�S)N� __loader__�__spec__)r2r3� isinstancerr1r_r)Zmodule_or_name�modulerr[rrrr�s    cCs�|jd�rdj|�}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} ({}: {})) r�r�r/rrrr� TypeError� ValueError�typer)r[r�r|Zexrrrr�s  *cCs�t|t�s|S|d}|dd�}|jd�\}}}|rbytj|j}Wqhttfk r^|SXntj}�x:|D�]0}t|t �s�qpt |�}|dk r�g} t |d�r�|j |�} | dk r�| j p�g} nt |d�r�|j|�\}} x| D]} | |kr�|j| �q�Wtjj||�} tjj| �rpy t| �} Wn8tk �rT}ztjjd| |f�WYdd}~XqpX| �Bx:| D]2}|jd�}| �sb|jd��r��qb|j|��qbWWdQRXqpW|S)Nz.pkgr,rrzCan't open %s: %s � �#)r��listr�r2r3r)r�rr4�strrr=r�submodule_search_locationsr�appendr@rG�isfilergrD�stderr�write�rstripr�)r4rZ sname_pkgZparent_package�_Z final_nameZ search_path�dirr�portionsr|ZportionZpkgfiler{r��linerrrr�sP!            cCs�tjj|�}|dkrdS|j}|dks2t|d� r6dStjj|�pLtjj |�}|dksbt|d� rfdS|j d�}|j dt j j|j��t j j|�}|j|�S)Nr �__file__�/r)rrrrr=r2r3�get� _bootstrap�_loadrY�insertr@r4�dirnamer�rGr )�packageZresourcer|rre�partsZ resource_namerrrr Rs     )Nr%N)Nr%)r%)r%)r%)r%)'� collectionsr� functoolsrZ simplegenericr�importlib.util�importlib.machineryr@Zos.pathr2�typesrrP�__all__r�__doc__rrr r r:rM�register� machinery� FileFinderrUr r r�r~r�r/rrrrrr rrrr�sP     9   ( Jc   ^