B <ÓFdÈ3ã@slddlmZmZmZddlZddlZddlZdgZGdd„deƒZ Gdd„de ƒZ e ej   dd¡ƒrhe Z dS) é)ÚdivisionÚabsolute_importÚprint_functionNÚ PackageLoaderc@s|eZdZddd„Zddd„Zd dd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z d!dd„Zdd„ZdS)"rFcCs˜|r d}nd}t |¡|_}td|j|jƒ|_td|j|jƒ}t|tƒrP|g}||_ d|jkrpt d|j|jƒtd|j|jƒ|_ i|_ g|_ d|_dS)z# Manages loading packages. ééÚ__name__Ú__path__Ú__all__z __all__ = []N)ÚsysÚ _getframeÚ parent_frameÚevalÚ f_globalsÚf_localsÚ parent_nameÚ isinstanceÚstrÚ parent_pathÚexecÚparent_export_namesÚ info_modulesÚimported_packagesÚverbose)ÚselfrZinfuncZ_levelÚframer©rúF/opt/alt/python37/lib64/python3.7/site-packages/numpy/_import_tools.pyÚ__init__ s  zPackageLoader.__init__Nc CsÎddlm}|tj ||d¡ƒ}x6|tj ||d¡ƒD]}|dd…|kr6| |¡q6Wg}xl|D]d}tj |t|ƒdd…¡ tjd¡}|rœ|d|}| ||f¡|  |  d tj |¡|¡¡qbW|S) zU Return list of (package name,info.py file) from parent_path subdirectories. r)Úglobzinfo.pyzinfo.pycNéÿÿÿÿrÚ.Ú*) rÚosÚpathÚjoinÚappendÚdirnameÚlenÚreplaceÚsepÚextendÚ_get_info_files) rÚ package_dirrZparent_packagerÚfilesÚ info_fileÚ info_filesÚ package_namerrrr, s        zPackageLoader._get_info_filesc Cs´ddlm}g}|j}|dkrBxÆ|jD]}| | d|¡¡q&Wn¤x¢|D]š}tjj|  d¡Ž}x‚|jD] }| ||¡}|rf| |¡PqfWyt d|ƒt ||<WqHt k rà} z |  d|d |j¡| f¡Wdd} ~ XYqHXqHWxÈ|D]À\}} ||krþqì|jd|} | d d kr d } nd } y|| d | | ƒ} Wn2tk rj} z| | ¡d} Wdd} ~ XYnX| dks„t| ddƒr’| |d¡qì| t| dgƒ¡| ||<qìWdS)zNInitialize info_modules = {: }. r)Únpy_load_moduleNr"r!zimport %s.info as infoz6No scipy-style subpackage %r found in %s. Ignoring: %sú:r Úc)z.pycÚrbr)z.pyÚUrz.infoÚignoreFÚdepends)Z numpy.compatr2rrr+r,r#r$r%ÚsplitrÚinfoÚ ImportErrorÚwarnrÚ ExceptionÚerrorÚgetattrÚpopÚ_init_info_modules)rÚpackagesr2r0rr$r1r-Z names_filesÚmsgr/ÚfullnameZfiledescriptorÚ info_modulerrrrA4sL        ,   z PackageLoader._init_info_modulescs¶i‰x&|j ¡D]\}}t|dgƒˆ|<qWg}x,tˆ ¡ƒD]}ˆ|s>| |¡ˆ|=q>WxRˆr°xHtˆ ¡ƒD]8\}}‡fdd„|Dƒ}|s¢| |¡ˆ|=qr|ˆ|<qrWq`W|S)zƒ Return package names sorted in the order as they should be imported due to dependence relations between packages. r8csg|]}|ˆkr|‘qSrr)Ú.0Ún)Ú depend_dictrrú ysz3PackageLoader._get_sorted_names..)rÚitemsr?ÚlistÚkeysr&)rÚnamerEZ package_namesZlstZnew_lstr)rHrÚ_get_sorted_nameshs    zPackageLoader._get_sorted_namesc OsŽtjdtdd|j}i|_| dd¡r.g|_| dd¡|_}| dd ¡}| |pVd ¡|  d |j ¡x|  ¡D]}||jkrˆqv|j|}t |d gƒ}t |d dƒ} |r²|rv| rÀ|d k rÀqv|j  |d ¡} d |} | | ¡râqv|j |¡|dkr8|j  |¡} | d k r8| | k r8| d|| | ¡| | ¡f¡d|krN|j |¡x4|D]*} | dkr¨td||j|j ƒ}|d kr®td||j|j ƒ}dd„|Dƒ}n| g}|dkræi}x(|D] }||j krÂ|j |||<qÂWd|d| } | | ¡rqV|dkr\xJ| ¡D]>\}} |j |} | | k r| d|| | ¡| | ¡f¡qW| dkrt|j |¡n |j | ¡qVWqvWd S)aLoad one or more packages into parent package top-level namespace. This function is intended to shorten the need to import many subpackages, say of scipy, constantly with statements such as import scipy.linalg, scipy.fftpack, scipy.etc... Instead, you can say: import scipy scipy.pkgload('linalg','fftpack',...) or scipy.pkgload() to load all of them in one call. If a name which doesn't exist in scipy's namespace is given, a warning is shown. Parameters ---------- *packages : arg-tuple the names (one or more strings) of all the modules one wishes to load into the top-level namespace. verbose= : integer verbosity level [default: -1]. verbose=-1 will suspend also warnings. force= : bool when True, force reloading loaded packages [default: False]. postpone= : bool when True, don't load packages [default: False] zWpkgload and PackageLoader are obsolete and will be removed in a future version of numpyr)Ú stacklevelÚforceFrr ÚpostponeNz4Imports to %r namespace ----------------------------Úglobal_symbolsÚpostpone_importzimport zOverwriting %s=%s (was %s)r!r"zgetattr(%s,"__all__",None)zdir(%s)cSsg|]}| d¡s|‘qS)Ú_)Ú startswith)rFÚsrrrrIØsz*PackageLoader.__call__..zfrom z import )Úwarningsr<ÚDeprecationWarningr rÚgetrrrAÚlogrrNr?rÚ_execcmdr&Ú _obj2reprrrrrJr+)rrBZoptionsrrrQr1rErRrSZ old_objectÚcmdstrZ new_objectZsymbolÚsymbolsZ old_objectsrVrrrÚ__call__‚s|%                             zPackageLoader.__call__c Csb|j}yt||j|jƒWn4tk rN}z| d||f¡dSd}~XYnX| d|¡dS)z! Execute command in parent_frame.z%s -> failed: %sTNz %s -> success)r rrrr=r>rZ)rr]rrCrrrr[õszPackageLoader._execcmdcCsPt|ddƒ}t|ddƒ}|dk r0t|ƒd|S|dk rHt|ƒd|St|ƒS)z Return repr(obj) withÚ __module__NÚ__file__z from )r?Úrepr)rÚobjÚmoduleÚfilerrrr\s  zPackageLoader._obj2reprcCs |jdkrtt|ƒtjddS)Nr)re)rÚprintrr Ústderr)rÚmessrrrrZ s zPackageLoader.logcCs |jdkrtt|ƒtjddS)Nr)re)rrfrr rg)rrhrrrr<s zPackageLoader.warncCs |jdkrtt|ƒtjddS)Nr )re)rrfrr rg)rrhrrrr>s zPackageLoader.errorcCsHt|ddƒ}|dk r|St|ddƒ}|dk rD| ¡ dd¡d}|SdS)z4 Get the title from a package info.py file. Z __doc_title__NÚ__doc__Ú rrz* Not Available *)r?Úlstripr9)rrEÚtitlerrrÚ_get_doc_titles  zPackageLoader._get_doc_titleú---cCsÔd}dd„|Dƒdg}t|ƒ}g}x¤|D]œ\}}|| d¡dd…}|t|ƒ} | ¡} d|| d|f} t| ƒd} xJ| rº|  d¡} t| ƒt| ƒ|kr¬| | ¡| } | d| 7} q|W| | ¡q*Wd  |¡S) NéFcSs&g|]\}}t|ƒ| d¡d‘qS)r!r)r(Úfind)rFrMrlrrrrI#sz0PackageLoader._format_titles..rr!rz%s%s %sú rj)Úmaxrpr(r9r@r&r%)rÚtitlesZcolsepZdisplay_window_widthZlengthsZ max_lengthÚlinesrMrlÚwZwordsÚlineZtabZwordrrrÚ_format_titles!s$    zPackageLoader._format_titlesc Cs¾ddl}i|_| d¡g}g}xr|j ¡D]d\}}t|dgƒ}|jd|}d}||jkr`d}| || |¡|f¡|r,| |d  |¡f¡q,W|  |¡d} |rº| d |  |d ¡7} | S) z6 Return documentation summary of subpackages. rNrRr!Úz [*]z, z? [*] - using a package requires explicit import (see pkgload)zB Global symbols from subpackages ------------------------------- z-->) r rrArJr?rÚmodulesr&rmr%rw) rr rsr^r1rErRrDZnoteZretstrrrrÚ get_pkgdocs6s(   zPackageLoader.get_pkgdocs)FF)N)N)rn)rr`Ú __qualname__rr,rArNr_r[r\rZr<r>rmrwrzrrrrr s   4s   c@seZdZdd„ZdS)ÚPackageLoaderDebugcCsJ|j}tdt|ƒdddtj ¡t||j|jƒtdƒtj ¡dS)z! Execute command in parent_frame.Z Executingz...rq)ÚendÚokN) r rfrbr ÚstdoutÚflushrrr)rr]rrrrr[Us  zPackageLoaderDebug._execcmdN)rr`r{r[rrrrr|Tsr|ZNUMPY_IMPORT_DEBUGÚ0)Z __future__rrrr#r rWr Úobjectrr|ÚintÚenvironrYrrrrÚsM