3 \�)� @s�dZddlmZmZmZmZmZmZmZm Z m Z yddlm Z Wne k rXdZ YnXddl mZmZmZmZddlmZddlmZddlmZddlZddlZddlZddlZddlZddlZejd ed d �dZd Zd Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'dd�Z(dd�Z)dd�Z*d8dd�Z+dd�Z,dd�Z-Gd d!�d!�Z.Gd"d#�d#�Z/Gd$d%�d%e/ej0�Z1d9d&d'�Z2Gd(d)�d)e/e�Z3d:d*d+�Z4d,d-�Z5d.d/�Z6d;d0d1�Z7d2d3�Z8d4d5�Z9e �r�dksz get_suffixes..cSsg|]}|dtf�qS)�r)� PY_SOURCE)r3r4r r r!r5lscSsg|]}|dtf�qS)r1)� PY_COMPILED)r3r4r r r!r5ms)r�EXTENSION_SUFFIXES�SOURCE_SUFFIXES�BYTECODE_SUFFIXES)� extensions�source�bytecoder r r!� get_suffixesisr?c@s eZdZdZdd�Zdd�ZdS)� NullImporterz-**DEPRECATED** Null import object. cCs2|dkrtddd��ntjj|�r.td|d��dS)N�zempty pathname)r.zexisting directory)� ImportError�osr.�isdir)�selfr.r r r!�__init__zs zNullImporter.__init__cCsdS)zAlways returns None.Nr )rE�fullnamer r r!� find_module�szNullImporter.find_moduleN)�__name__� __module__� __qualname__�__doc__rFrHr r r r!r@rsr@cs.eZdZdZd�fdd� Z�fdd�Z�ZS)�_HackedGetDatazMCompatibility support for 'file' arguments of various load_*() functions.Ncst�j||�||_dS)N)�superrF�file)rErGr.rO)� __class__r r!rF�sz_HackedGetData.__init__c sX|jrH||jkrH|jjs |j}nt|jd�|_}|� |j�SQRXn t�j|�SdS)z;Gross hack to contort loader to deal w/ load_*()'s bad API.r6N)rOr.�closed�open�readrN�get_data)rEr.rO)rPr r!rT�sz_HackedGetData.get_data)N)rIrJrKrLrFrT� __classcell__r r )rPr!rM�srMc@seZdZdZdS)�_LoadSourceCompatibilityz5Compatibility support for implementing load_source().N)rIrJrKrLr r r r!rV�srVcCs\t|||�}tj|||d�}|tjkr8t|tj|�}nt|�}tj||�|_ |j |j _ |S)N)�loader) rVr�spec_from_file_locationr%�modulesr rr�SourceFileLoader� __loader__�__spec__rW)r�pathnamerOrW�spec�moduler r r!� load_source�s   r`c@seZdZdZdS)�_LoadCompiledCompatibilityz7Compatibility support for implementing load_compiled().N)rIrJrKrLr r r r!ra�sracCsZt|||�}tj|||d�}|tjkr8t|tj|�}nt|�}t||�|_|j|j _ |S)z**DEPRECATED**)rW) rarrXr%rYr rrr[r\rW)rr]rOrWr^r_r r r!� load_compiled�s    rbcCs�tjj|�rhtjdd�tjdd�}x>|D](}tjj|d|�}tjj|�r.|}Pq.Wtdj |���t j ||gd�}|t j kr�t|t j |�St|�SdS)z**DEPRECATED**NrFz{!r} is not a package)�submodule_search_locations)rCr.rDrr:r;�join�exists� ValueError�formatrrXr%rYr r)rr.r<� extensionZ init_pathr^r r r!� load_package�s     ric Cs|\}}}|r2|jd � s"d|kr2tdj|���n�|dkrZ|tthkrZdj|�}t|��n�|tkrnt|||�S|tkr�t|||�S|tkr�tdk r�|dkr�t |d��}t|||�SQRXn t|||�SnL|t kr�t ||�S|t kr�t |�S|tk�r�t|�Sdj||�}t||d ��dS) z�**DEPRECATED** Load a module, given information returned by find_module(). The module name must include the full package name, if any. r6�U�+zinvalid file open mode {!r}Nz.file object required for import (type code {})r1z*Don't know how to import {} (type code {}))r)r6rj)� startswithrfrgr7r8r`rbr2� load_dynamicrR� PKG_DIRECTORYri� C_BUILTIN� init_builtin� PY_FROZENrrB) rrO�filenameZdetails�suffix�mode�type_�msgZ opened_filer r r!� load_module�s.         rwc Cs�t|t�stdjt|����n$t|td�tf�sBtdjt|����|dkr�t|�rbddddtffSt |�rzddddt ffSt j }x�|D]�}t j j||�}xHdtjdgD]6}d|}t j j||�}t j j|�r�d|ddtffSq�Wx:t�D].\}}}||} t j j|| �}t j j|�r�Pq�Wq�Pq�Wttj|�|d��d} d |k�rjt|d ��} tj| j�d} WdQRXt||| d �} | ||||ffS) a,**DEPRECATED** Search for a module. If path is omitted or None, search for a built-in, frozen or special module and continue search in sys.path. The module name cannot contain '.'; to search for a submodule of a package, pass the submodule name and the package's __path__. z'name' must be a str, not {}Nz%'path' must be None or a list, not {}rAz.pyrrF)r�br1)�encoding)� isinstance�str� TypeErrorrg�type�list� RuntimeErrorrror rqr%r.rCrdrr;�isfilernr?rBr rR�tokenize�detect_encoding�readline) rr.�entryZpackage_directoryrsZpackage_file_nameZ file_pathrtru� file_nameryrOr r r!rH�s@       rHcCs tj|�S)zw**DEPRECATED** Reload the module and return it. The module must have been successfully imported before. )� importlib�reload)r_r r r!r�3sr�c Cs"yt|�Stk rdSXdS)zl**DEPRECATED** Load and return a built-in module by name, or None is such module doesn't exist N)rrB)rr r r!rp>srpcCs0ddl}|jj||�}|jj|||d�}t|�S)z:**DEPRECATED** Load an extension module. rN)rrW�origin)�importlib.machineryr�ExtensionFileLoader� ModuleSpecr)rr.rOr�rWr^r r r!rmKs  rm)N)N)N)N)N);rL�_imprrrrrrrr r r rBZimportlib._bootstrapr r rrZimportlib._bootstrap_externalrr�rrrCr%r�rr*�warn�DeprecationWarningZ SEARCH_ERRORr7r8r2Z PY_RESOURCErnrorqZPY_CODERESOURCEZIMP_HOOKr"r$r(r-r0r?r@rMrZrVr`rarbrirwrHr�rprmr r r r!�s^,          # 4