B \]()@sdZddlmZmZmZmZmZmZmZm Z m Z yddlm Z Wne k rXdZ YnXddl mZmZmZmZddlmZddlmZddlmZddlZddlZddlZddlZddlZddlZejd ed d dZd Zd Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'ddZ(ddZ)ddZ*d8ddZ+ddZ,ddZ-Gd d!d!Z.Gd"d#d#Z/Gd$d%d%e/ej0Z1d9d&d'Z2Gd(d)d)e/eZ3d:d*d+Z4d,d-Z5d.d/Z6d;d0d1Z7d2d3Z8d4d5Z9e rdksz get_suffixes..cSsg|]}|dtfqS)r) PY_SOURCE)r3r4r r r!r5lscSsg|]}|dtfqS)r1) PY_COMPILED)r3r4r r r!r5ms)rEXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXES) extensionssourcebytecoder r r! get_suffixesisr?c@s eZdZdZddZddZdS) NullImporterz-**DEPRECATED** Null import object. cCs2|dkrtdddntj|r.td|ddS)Nzempty pathname)r.zexisting directory) ImportErrorosr.isdir)selfr.r r r!__init__zs zNullImporter.__init__cCsdS)zAlways returns None.Nr )rEfullnamer r r! find_moduleszNullImporter.find_moduleN)__name__ __module__ __qualname____doc__rFrHr r r r!r@rsr@cs.eZdZdZdfdd ZfddZZS)_HackedGetDatazMCompatibility support for 'file' arguments of various load_*() functions.Ncst||||_dS)N)superrFfile)rErGr.rO) __class__r r!rFsz_HackedGetData.__init__c sp|jr`||jkr`|jjs0|j}d|jkr0||jjrJt|jd|_}| |SQRXn t|SdS)z;Gross hack to contort loader to deal w/ load_*()'s bad API.br1N) rOr.closedmodecloseopenreadrNget_data)rEr.rO)rPr r!rWs z_HackedGetData.get_data)N)rIrJrKrLrFrW __classcell__r r )rPr!rMsrMc@seZdZdZdS)_LoadSourceCompatibilityz5Compatibility support for implementing load_source().N)rIrJrKrLr r r r!rYsrYcCs\t|||}tj|||d}|tjkr8t|tj|}nt|}t|||_ |j |j _ |S)N)loader) rYrspec_from_file_locationr%modulesr rrSourceFileLoader __loader____spec__rZ)rpathnamerOrZspecmoduler r r! load_sources   rcc@seZdZdZdS)_LoadCompiledCompatibilityz7Compatibility support for implementing load_compiled().N)rIrJrKrLr r r r!rdsrdcCsZt|||}tj|||d}|tjkr8t|tj|}nt|}t|||_|j|j _ |S)z**DEPRECATED**)rZ) rdrr[r%r\r rrr^r_rZ)rr`rOrZrarbr r r! load_compileds    recCstj|rhtjddtjdd}x>|D](}tj|d|}tj|r.|}Pq.Wtd |t j ||gd}|t j krt|t j |St|SdS)z**DEPRECATED**NrFz{!r} is not a package)submodule_search_locations)rCr.rDrr:r;joinexists ValueErrorformatrr[r%r\r r)rr.r< extensionZ init_pathrar r r! load_packages     rlc Cs|\}}}|r0|dr d|kr0td|n|dkrX|tthkrXd|}t|n|tkrlt|||S|tkrt|||S|tkrtdk r|dkrt |d}t|||SQRXn t|||SnL|t krt ||S|t krt |S|tkrt|Sd||}t||ddS) z**DEPRECATED** Load a module, given information returned by find_module(). The module name must include the full package name, if any. )r6U+zinvalid file open mode {!r}Nz.file object required for import (type code {})r1z*Don't know how to import {} (type code {}))r) startswithrirjr7r8rcrer2 load_dynamicrU PKG_DIRECTORYrl C_BUILTIN init_builtin PY_FROZENrrB) rrOfilenamedetailssuffixrStype_msgZ opened_filer r r! load_modules.         rzc Cst|tstdt|n$t|tdtfsBtdt||dkrt|rbddddtffSt |rzddddt ffSt j }x|D]}t j ||}xHdtjdgD]6}d|}t j ||}t j |rd|ddtffSqWx:tD].\}}}||} t j || }t j |rPqWqPqWtt||dd} d |krjt|d } t| jd} 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)rrQr1)encoding) isinstancestr TypeErrorrjtypelist RuntimeErrorrrrr rtr%r.rCrgrr;isfilerqr?rBr rUtokenizedetect_encodingreadline) rr.entryZpackage_directoryrwZpackage_file_name file_pathrSrx file_namer{rOr r r!rHs@       rHcCs t|S)zw**DEPRECATED** Reload the module and return it. The module must have been successfully imported before. ) importlibreload)rbr r r!r2srcCs"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!rs=srscCs0ddl}|j||}|jj|||d}t|S)z:**DEPRECATED** Load an extension module. rN)rrZorigin)importlib.machineryrExtensionFileLoader ModuleSpecr)rr.rOrrZrar r r!rpJs  rp)N)N)N)N)N);rL_imprrrrrrrr r r rBZimportlib._bootstrapr r rrZimportlib._bootstrap_externalrrrrrCr%rrr*warnDeprecationWarningZ SEARCH_ERRORr7r8r2Z PY_RESOURCErqrrrtZPY_CODERESOURCEZIMP_HOOKr"r$r(r-r0r?r@rMr]rYrcrdrerlrzrHrrsrpr r r r!s^,          # 4