a DOg()@sdZddlmZmZmZmZmZmZmZm Z m Z zddlm Z Wne yVdZ Yn0ddl 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 rdkz get_suffixes..cSsg|]}|dtfqS)r) PY_SOURCEr7r!r!r"r:lr;cSsg|]}|dtfqSr4) PY_COMPILEDr7r!r!r"r:mr;)rEXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXES) extensionssourcebytecoder!r!r" get_suffixesisrEc@s eZdZdZddZddZdS) NullImporterz-**DEPRECATED** Null import object. cCs2|dkrtdddntj|r.td|ddS)Nzempty pathnamer2zexisting directory) ImportErrorosr/isdir)selfr/r!r!r"__init__zs zNullImporter.__init__cCsdS)zAlways returns None.Nr!)rKfullnamer!r!r" find_moduleszNullImporter.find_moduleN)__name__ __module__ __qualname____doc__rLrNr!r!r!r"rFrsrFcs.eZdZdZdfdd ZfddZZS)_HackedGetDatazMCompatibility support for 'file' arguments of various load_*() functions.Ncst||||_dS)N)superrLfile)rKrMr/rU __class__r!r"rLsz_HackedGetData.__init__cs|jrx||jkrx|jjs0|j}d|jvr0||jjrJt|jd|_}||WdS1sl0Yn t|SdS)z;Gross hack to contort loader to deal w/ load_*()'s bad API.br5N) rUr/closedmodecloseopenreadrTget_data)rKr/rUrVr!r"r^s (z_HackedGetData.get_data)N)rOrPrQrRrLr^ __classcell__r!r!rVr"rSsrSc@seZdZdZdS)_LoadSourceCompatibilityz5Compatibility support for implementing load_source().NrOrPrQrRr!r!r!r"r`sr`cCs\t|||}tj|||d}|tjvr8t|tj|}nt|}t|||_ |j |j _ |S)Nloader) r`rspec_from_file_locationr&modulesr rrSourceFileLoader __loader____spec__rcr pathnamerUrcspecmoduler!r!r" load_sources   rmc@seZdZdZdS)_LoadCompiledCompatibilityz7Compatibility support for implementing load_compiled().Nrar!r!r!r"rnsrncCsZt|||}tj|||d}|tjvr8t|tj|}nt|}t|||_|j|j _ |S)r3rb) rnrrdr&rer rrrgrhrcrir!r!r" load_compileds    rocCstj|rftjddtjdd}|D]*}tj|d|}tj|r,|}qfq,td |t j ||gd}|t j vrt|t j |St|SdS)r3NrLz{!r} is not a package)submodule_search_locations)rIr/rJrr@rAjoinexists ValueErrorformatrrdr&rer r)r r/rB extensionZ init_pathrkr!r!r" load_packages      rvc Cs4|\}}}|r2|dr d|vr2td|n|durZ|tthvrZd|}t|n|tkrnt|||S|tkrt|||S|tkrtdur|durt |d}t|||WdS1s0Yn t|||SnP|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. )r<U+zinvalid file open mode {!r}Nz.file object required for import (type code {})r5z*Don't know how to import {} (type code {})r) startswithrsrtr=r>rmror6 load_dynamicr\ PKG_DIRECTORYrv C_BUILTIN init_builtin PY_FROZENrrH) r rUfilenameZdetailssuffixrZtype_msgZ opened_filer!r!r" load_modules.      ,     rc Cst|tstdt|n$t|tdtfsBtdt||durt|rbddddtffSt |rzddddt ffSt j }|D]}t j ||}dtjdfD]>}d|}t j ||}t j |rd|ddtffSqtD]2\}}}||} t j || }t j |rq qqq:qtt||dd} d |vrt|d  } t| jd} Wdn1sz0Yt||| 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 {}rGz.pyrrLrrXr5)encoding) isinstancestr TypeErrorrttypelist RuntimeErrorrr|r r~r&r/rIrqrrAisfiler{rErHr r\tokenizedetect_encodingreadline) r r/entryZpackage_directoryrZpackage_file_nameZ file_pathrZr file_namerrUr!r!r"rNsB     0rNcCs t|S)zw**DEPRECATED** Reload the module and return it. The module must have been successfully imported before. ) importlibreload)rlr!r!r"r2srcCs$z t|WStyYdS0dS)zl**DEPRECATED** Load and return a built-in module by name, or None is such module doesn't exist N)rrHrr!r!r"r}=s  r}cCs0ddl}|j||}|jj|||d}t|S)z:**DEPRECATED** Load an extension module. rN)r rcorigin)importlib.machineryrExtensionFileLoader ModuleSpecr)r r/rUrrcrkr!r!r"rzJs rz)N)N)N)N)N);rR_imprrrrrrrr r r rHZimportlib._bootstrapr r rrZimportlib._bootstrap_externalrrrrrIr&rrr+warnDeprecationWarningZ SEARCH_ERRORr=r>r6Z PY_RESOURCEr{r|r~ZPY_CODERESOURCEZIMP_HOOKr#r%r)r.r1rErFrSrfr`rmrnrorvrrNrr}rzr!r!r!r"s`,          # 4