2[c@`s dZddlmZmZmZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl m Z ejddkrddlmZddlmZn ddlmZddlmZdd lmZdd lmZddlZdd lmZdd lmZdd lmZmZmZddl m!Z!m"Z"m#Z#ddl$m%Z&ddl'm(Z(ddl)m*Z*ddl+Zddl,Z,ddl-Z-ddl.Z.idd6dd6Z/e/e.j0dZ1dZ2ej.dkrdej3j4ej5j6dga7gZ8ga9dgZ:gZ;gZ<ddgZ=dgZ>ge=D]Z?e?j@dejA^qbZ=ge>D]Z?e?j@dejA^qZ>dZBejddfkre-jCd ZDeDrpej3jEeDZFe.j0dkr d!ZGnd"ZGej3j4eFd#ZHxDej3j4eHeGd$ej3j4eHeGd%gD]ZIeBeIqYWne-jCd&ZJeJrej3jEeJZKeBej3j4eKd'd(eBej3j4eKd(nnne2d)d*d+d,d-ge1a7gZ8d.d/d0d1d2d3d4ga9dd5d6d7gZ:e2d8d9d+ge1Z;d:d;d0gZ<ej3jLd<re d=ZMeMrej3jNeMddZOe;jPeOd<ge<jPd>d?gnnddlQZReSZTzy:eUejVd@ZTeRjWdAdBgdCeRjXdDeTZYWneZefk rnmXe[eYj\dj]j^Z_eYj`dkre;ej3j4dEe_g7Z;t7ej3j4dEe_g7a7nWdeTeSk reTjanXej3j4ejbdt7kr+t7jcdej3j4ejbdt9jdej3j4ejbde:jdej3j4ejbdFngt7D]Zeej3jfeerPee^q2a7ge8D]Zeej3jfeer{ee^q]Z8gt9D]Zeej3jfeeree^qa9ge:D]Zeej3jfeeree^qZ:e#ZgdGZhddHZidIefdJYZjdKejfdLYZkdMejfdNYZldOelfdPYZmdQejfdRYZndSenfdTYZodUejfdVYZpdWejfdXYZqdYejfdZYZrd[ejfd\YZsd]ejfd^YZtd_eufd`YZvdaevfdbYZwdcevfddYZxdeexfdfYZydgexfdhYZzdiexfdjYZ{dkexfdlYZ|dmexfdnYZ}doexfdpYZ~dqexfdrYZdsevfdtYZduevfdvYZdwefdxYZdyefdzYZd{evfd|YZd}efd~YZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdevfdYZdevfdYZdZiZdZdevfdYZdevfdYZdevfdYZdefdYZdefdYZdefdYZdefdYZdevfdYZdevfdYZdevfdYZdevfdYZdefdYZdefdYZdefdYZdevfdYZdevfdYZdevfdYZdevfdYZdevfdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdevfdYZdevfdYZdZidd6dd6dd6dd6Zidd6dd6dd6dd6ZdZeSfdZeSdZedkr endS(sk This file defines a set of system_info classes for getting information about various resources (libraries, library directories, include directories, etc.) in the system. Currently, the following classes are available: atlas_info atlas_threads_info atlas_blas_info atlas_blas_threads_info lapack_atlas_info lapack_atlas_threads_info atlas_3_10_info atlas_3_10_threads_info atlas_3_10_blas_info, atlas_3_10_blas_threads_info, lapack_atlas_3_10_info lapack_atlas_3_10_threads_info blas_info lapack_info openblas_info blis_info blas_opt_info # usage recommended lapack_opt_info # usage recommended fftw_info,dfftw_info,sfftw_info fftw_threads_info,dfftw_threads_info,sfftw_threads_info djbfft_info x11_info lapack_src_info blas_src_info numpy_info numarray_info numpy_info boost_python_info agg2_info wx_info gdk_pixbuf_xlib_2_info gdk_pixbuf_2_info gdk_x11_2_info gtkp_x11_2_info gtkp_2_info xft_info freetype2_info umfpack_info Usage: info_dict = get_info() where is a string 'atlas','x11','fftw','lapack','blas', 'lapack_src', 'blas_src', etc. For a complete list of allowed names, see the definition of get_info() function below. Returned info_dict is a dictionary which is compatible with distutils.setup keyword arguments. If info_dict == {}, then the asked resource is not available (system_info could not find it). Several *_info classes specify an environment variable to specify the locations of software. When setting the corresponding environment variable to 'None' then the software will be ignored, even when it is available in system. Global parameters: system_info.search_static_first - search static libraries (.a) in precedence to shared ones (.so, .sl) if enabled. system_info.verbosity - output the results to stdout if enabled. The file 'site.cfg' is looked for in 1) Directory of main setup.py file being run. 2) Home directory of user running the setup.py file as ~/.numpy-site.cfg 3) System wide directory (location of this file...) The first one found is used to get system configuration options The format is that used by ConfigParser (i.e., Windows .INI style). The section ALL has options that are the default for each section. The available sections are fftw, atlas, and x11. Appropriate defaults are used if nothing is specified. The order of finding the locations of resources is the following: 1. environment variable 2. section in site.cfg 3. ALL section in site.cfg Only the first complete match is returned. Example: ---------- [ALL] library_dirs = /usr/lib:/usr/local/lib:/opt/lib include_dirs = /usr/include:/usr/local/include:/opt/include src_dirs = /usr/local/src:/opt/src # search static libraries (.a) in preference to shared ones (.so) search_static_first = 0 [fftw] fftw_libs = rfftw, fftw fftw_opt_libs = rfftw_threaded, fftw_threaded # if the above aren't found, look for {s,d}fftw_libs and {s,d}fftw_opt_libs [atlas] library_dirs = /usr/lib/3dnow:/usr/lib/3dnow/atlas # for overriding the names of the atlas libraries atlas_libs = lapack, f77blas, cblas, atlas [x11] library_dirs = /usr/X11R6/lib include_dirs = /usr/X11R6/include ---------- Authors: Pearu Peterson , February 2002 David M. Cooke , April 2002 Copyright 2002 Pearu Peterson all rights reserved, Pearu Peterson Permission to use, modify, and distribute this software is given under the terms of the NumPy (BSD style) license. See LICENSE.txt that came with this distribution for specifics. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. i(tdivisiontabsolute_importtprint_functionN(tglob(treducei(t NoOptionError(tRawConfigParser(tDistutilsError(t Distribution(tlog(t get_platform(tfind_executablet exec_commandt get_pythonexe(t is_sequencet is_stringtget_shared_lib_extension(tconfig(t get_exception(tcustomized_ccompileri t32biti@t64bitcC`s]|dkrtdn|dkr+|Sg}x%|D]}|j|d|gq8W|S(sReturn a list of library paths valid on 32 or 64 bit systems. Inputs: paths : sequence A sequence of strings (typically paths) bits : int An integer, the only valid values are 32 or 64. A ValueError exception is raised otherwise. Examples: Consider a list of directories >>> paths = ['/usr/X11R6/lib','/usr/X11/lib','/usr/lib'] For a 32-bit platform, this is already valid: >>> np.distutils.system_info.libpaths(paths,32) ['/usr/X11R6/lib', '/usr/X11/lib', '/usr/lib'] On 64 bits, we prepend the '64' postfix >>> np.distutils.system_info.libpaths(paths,64) ['/usr/X11R6/lib64', '/usr/X11R6/lib', '/usr/X11/lib64', '/usr/X11/lib', '/usr/lib64', '/usr/lib'] i i@s+Invalid bit size in libpaths: 32 or 64 onlyt64(i i@(t ValueErrortextend(tpathstbitstouttp((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytlibpathss   twin32sC:\tlibst.tincludesinclude/suitesparsetlibt/c`sPtjjtjfdtDtjfdtDdS(s5Add a package manager root to the include directoriesc3`s$|]}tjj|VqdS(N(tostpathtjoin(t.0td(t library_root(s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pys sc3`s$|]}tjj|VqdS(N(R$R%R&(R'R((R)(s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pys sN(R$R%tnormpathtdefault_lib_dirsRt _lib_dirstdefault_include_dirst _include_dirs(R)((R)s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytadd_system_roots tvcpkgtx86tx64t installeds-windowss-windows-statictcondas..tLibrarys/usr/local/libs/opt/libs/usr/libs/opt/local/libs/sw/libs/usr/local/includes /opt/includes /usr/includes/opt/local/include/ufsparses/opt/local/includes /sw/includes/usr/include/suitesparses/usr/local/srcs/opt/srcs/sw/srcs/usr/X11R6/libs /usr/X11/libs/usr/X11R6/includes/usr/X11/includes /usr/lib/X11s/usr/lib/*/libX11.sos/usr/lib/X11/includes/usr/include/X11twtgccs-print-multiarchtstdouttstderrs /usr/lib/tsrccC`sg}y t}Wntk r0tjd}nTXtjjtjjtjj|d|}tjj |r|j |nytjj d}Wnt k rn8Xtjj||}tjj |r|j |ntjj |r|j tjj|n|S(sReturns a list of files named 'fname' from 1) System-wide directory (directory-location of this module) 2) Users HOME directory (os.environ['HOME']) 3) Local directory it~( t__file__t NameErrortsystargvR$R%R&tsplittabspathtisfiletappendt expandusertKeyError(tfnamet filenamestftsysfilet user_file((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytget_standard_fileDs&  (  cC`si?td6td6td6td6td6td6td6td6td 6t d 6t d 6t d 6t d 6t d6td6td6td6td6td6td6td6td6td6td6td6td6td6td6td6td6td6td 6t d!6t!d"6t"d#6t#d$6t$d%6t%d&6t%d'6t&d(6t'd)6t(d*6t)d+6t*d,6t+d-6t,d.6t-d/6t-d06t.d16t.d26t/d36t0d46t0d56t1d66t1d76t2d86t2d96t3d:6t3d;6t4d<6t5d=6t6d>6t7d?6j8|j9t:}|j;|S(@sg notfound_action: 0 - do nothing 1 - display warning message 2 - raise error tatlast atlas_threadst atlas_blastatlas_blas_threadst lapack_atlastlapack_atlas_threadst atlas_3_10tatlas_3_10_threadstatlas_3_10_blastatlas_3_10_blas_threadstlapack_atlas_3_10tlapack_atlas_3_10_threadstmkltopenblastopenblas_lapacktopenblas_clapacktblist lapack_mkltblas_mklt acceleratetx11tfft_opttfftwtfftw2tfftw3tdfftwtsfftwt fftw_threadst dfftw_threadst sfftw_threadstdjbffttblastlapackt lapack_srctblas_srctnumpytf2pytNumerictnumerictnumarraytnumerixt lapack_opttblas_optt boost_pythontagg2twxtgdk_pixbuf_xlib_2sgdk-pixbuf-xlib-2.0t gdk_pixbuf_2sgdk-pixbuf-2.0tgdktgdk_2sgdk-2.0t gdk_x11_2s gdk-x11-2.0t gtkp_x11_2s gtk+-x11-2.0tgtkp_2sgtk+-2.0txftt freetype2tumfpacktamd(<t atlas_infotatlas_threads_infotatlas_blas_infotatlas_blas_threads_infotlapack_atlas_infotlapack_atlas_threads_infotatlas_3_10_infotatlas_3_10_threads_infotatlas_3_10_blas_infotatlas_3_10_blas_threads_infotlapack_atlas_3_10_infotlapack_atlas_3_10_threads_infotmkl_infot openblas_infotopenblas_lapack_infotopenblas_clapack_infot blis_infotlapack_mkl_infot blas_mkl_infotaccelerate_infotx11_infot fft_opt_infot fftw_infot fftw2_infot fftw3_infot dfftw_infot sfftw_infotfftw_threads_infotdfftw_threads_infotsfftw_threads_infot djbfft_infot blas_infot lapack_infotlapack_src_infot blas_src_infot numpy_infot f2py_infot Numeric_infot numarray_infot numerix_infotlapack_opt_infot blas_opt_infotboost_python_infot agg2_infotwx_infotgdk_pixbuf_xlib_2_infotgdk_pixbuf_2_infotgdk_infot gdk_2_infotgdk_x11_2_infotgtkp_x11_2_infot gtkp_2_infotxft_infotfreetype2_infot umfpack_infotamd_infotgettlowert system_infotget_info(tnametnotfound_actiontcl((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRhs  t NotFoundErrorcB`seZdZRS(s1Some third-party program or library is not found.(t__name__t __module__t__doc__(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstAtlasNotFoundErrorcB`seZdZRS(s Atlas (http://math-atlas.sourceforge.net/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [atlas]) or by setting the ATLAS environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstLapackNotFoundErrorcB`seZdZRS(s Lapack (http://www.netlib.org/lapack/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [lapack]) or by setting the LAPACK environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstLapackSrcNotFoundErrorcB`seZdZRS(s Lapack (http://www.netlib.org/lapack/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [lapack_src]) or by setting the LAPACK_SRC environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstBlasNotFoundErrorcB`seZdZRS(s Blas (http://www.netlib.org/blas/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [blas]) or by setting the BLAS environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstBlasSrcNotFoundErrorcB`seZdZRS(s Blas (http://www.netlib.org/blas/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [blas_src]) or by setting the BLAS_SRC environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstFFTWNotFoundErrorcB`seZdZRS(s FFTW (http://www.fftw.org/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [fftw]) or by setting the FFTW environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstDJBFFTNotFoundErrorcB`seZdZRS(s DJBFFT (http://cr.yp.to/djbfft.html) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [djbfft]) or by setting the DJBFFT environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstNumericNotFoundErrorcB`seZdZRS(sv Numeric (http://www.numpy.org/) module not found. Get it from above location, install it, and retry setup.py.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstX11NotFoundErrorcB`seZdZRS(sX11 libraries not found.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRstUmfpackNotFoundErrorcB`seZdZRS(s UMFPACK sparse solver (http://www.cise.ufl.edu/research/sparse/umfpack/) not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [umfpack]) or by setting the UMFPACK environment variable.(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRsRcB`seZdZdZdZdZdZiZe Z e e ddZ dZdZdZdZd Zdd Zd Zd d ZddZddZddZdZddZdZgdZgdZdZdZdZ dZ!RS(s= get_info() is the only public method. Don't use others. tALLiicC`s#i|j_g|_itjj|d6tjj|d6tjjtd6dd6tjjtd6t|j d6dd6dd 6}t ||_ g|_ |j j td |j j td |j|jdk r|j j|jd|_ nt|j tstdS( Nt library_dirst include_dirstruntime_library_dirsttrpathtsrc_dirstsearch_static_firsttextra_compile_argstextra_link_argss.numpy-site.cfgssite.cfg(t __class__tinfotlocal_prefixesR$tpathsepR&tdefault_runtime_dirstdefault_src_dirststrRt ConfigParsertcptfilesRRKtparse_config_filestsectiontNonet getbooleant isinstancetinttAssertionError(tselfR+R-t verbositytdefaults((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyt__init__s$     cC`sT|jj|j|jj|jsP|jdk rP|jj|jqPndS(N(RtreadRt has_sectionRRt add_section(R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR(scC`s|j}|j}|j}|j|jddi}x|D]}|j||g}|dk rt||ntjd||rJ|j||g}|dk r|d=|j d|dtplatformRtso_ext(Rtct static_extstexts((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytlibrary_extensionss   cC`sw|j}d}x9|D]1}|j||||g}|dk rPqqW|sstjddj||n|S(sIf static or shared libraries are available then return their info dictionary. Checks for all libraries as shared libraries first, then static (or vice versa if self.search_static_first is True). s libraries %s not found in %sR0N(R>Rt _check_libsR RR&(Rtlib_dirsRtopt_libsR=Rtext((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    cC`sM|j}|j||||}|sItjddj||n|S(sIf static or shared libraries are available then return their info dictionary. Checks each library for shared or static. s libraries %s not found in %sR0(R>R?R RR&(RR@RRAR=R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyt check_libs2s   cC`st|sttjdkr0ddg}n dg}x|D]}x2|D]*}|j||||}|rMPqMqMW|r@t|dkst|dkr|d7}n|dkr||}n|Sq@WtS(NRRR"is.dll.as.dlls.lib(RRR>R9t combine_pathsRtFalse(Rtlib_dirR"R=t lib_prefixesRBtprefixR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyt _find_libs"       c C`sgg}}xg|D]_}xV|D]N}|j|||}|r!|j|||krk|j|nPq!q!WqW||fS(N(RIRC( RR@RR=t found_dirst found_libsR"RFt found_lib((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyt _find_libs.s      c C`st|s|g}n|j|||\}}t|dkrt|t|kr|j|||\}}|j|x*|D]"} | |kr|j| qqWi|d6|d6} | SdSdS(sxFind mandatory and optional libs in expected paths. Missing optional libraries are silently forgotten. iRRN(RRMRRRCR( RR@RRAR=RJRKtopt_found_dirstopt_found_libsRFR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR?;s  *   cG`st|i|jd6S(sjReturn a list of existing paths composed by all combinations of items from the arguments. R(RDR(Rtargs((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRDPsN("RRRRRRRRRRRR+R-RRRRRRRR-RRR.R/R4RR>RRCRIRMR?RD(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs<      $ 7          RcB`seZdZRS(cC`sti}tdp'tdp'td}td}|rpt|||r_t||n|j|dSdS(NRdRcReRj(RRR(RRRR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR Ys$   (RRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRWsRcB`seZdZdZeZidd6dgd6dgd6dgd6id d6d dgd6d d gd6dgd6gZdZdZ RS(RbtFFTWRdRRsfftw3.htincludest SCIPY_FFTW3_HtmacrosRctrfftwsfftw.hsrfftw.ht SCIPY_FFTW_HcC`s|j}|j}|j|jd|d}|j||}|d k rd}x`|D]X}t|j||dt|dkr`t|d|gd}|g}Pq`q`W|rt|d|dqd }n|d k r|j |t St j d |d t Sd S( s8Returns True on successful version detection, else Falset_libsRiRRRit define_macrosRTs %s not foundRN(RR.R4RRRRRDRRtTrueR RRE(Rt ver_paramR@t incl_dirsRRRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyt calc_ver_infoss*        cC`s+x$|jD]}|j|r Pq q WdS(N(tver_infoR\(RR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR sN(RSN(RVN( RRRRRRRR]R\R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRes        RcB`sNeZdZdZeZidd6ddgd6ddgd6d gd 6gZRS( RbRQRcRRURsfftw.hsrfftw.hRRRVRTN(RVN(RRRRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs   RcB`sHeZdZdZeZidd6dgd6dgd6d gd6gZRS( RdtFFTW3RRsfftw3.hRRRSRTN(RSN(RRRRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs   RcB`sHeZdZdZidd6ddgd6ddgd6d gd 6gZRS( RbRQReRtdrfftwRsdfftw.hsdrfftw.hRRt SCIPY_DFFTW_HRTN(R`N(RRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    RcB`sHeZdZdZidd6ddgd6ddgd6d gd 6gZRS( RbRQRfRtsrfftwRssfftw.hssrfftw.hRRt SCIPY_SFFTW_HRTN(RbN(RRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    RcB`sHeZdZdZidd6ddgd6ddgd 6d gd 6gZRS(RbRQs fftw threadsRt rfftw_threadsRgRsfftw_threads.hsrfftw_threads.hRRtSCIPY_FFTW_THREADS_HRTN(RdN(RRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    RcB`sHeZdZdZidd6ddgd6ddgd 6d gd 6gZRS(RbRQs dfftw threadsRtdrfftw_threadsRhRsdfftw_threads.hsdrfftw_threads.hRRtSCIPY_DFFTW_THREADS_HRTN(RfN(RRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    RcB`sHeZdZdZidd6ddgd6ddgd 6d gd 6gZRS(RbRQs sfftw threadsRtsrfftw_threadsRiRssfftw_threads.hssrfftw_threads.hRRtSCIPY_SFFTW_THREADS_HRTN(RhN(RRRRRR](((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    RcB`s,eZdZdZeZdZdZRS(RjtDJBFFTcC`sxtj|||}g}x1|D])}|j|j|dg|gq"Wg|D]}tjj|rV|^qVS(NRj(RR-RRDR$R%R (RRRtpre_dirsRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR-s  'cC`s|j}|j}d}xz|D]r}|j|dg}|rWi|d6}Pn|j|ddtg}|r%idgd6|gd6}Pq%q%W|dkrdSx_|D]W}t|j|dd gd krt|d |gd dg|j|dSqWdS(Nsdjbfft.at extra_objectss libdjbfft.at libdjbfftRjRRsfftc8.hs fftfreq.hiRRXtSCIPY_DJBFFT_H(RmN(RR.RRDR:RRR(RR@R[RR(R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR s*      $  (RRRRRRR-R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs  RcB`s8eZdZdZdgZdZdZdZRS(RXtMKLROOTtmkl_rtc C`stjjdd}|dk r%|Stjjddjtj}d}tjj|rt|d:}x0|D](}|j }|rw|j |qwqwWWdQXng}xt|D]l}|jtj }xQ|D]I} | j drtj j ||j| d }|j |PqqWqWx|D]y}ttjj |dd} | ttjj |d 7} x3| D]+}tjjtjj |d rz|SqzWq0WdS( NRntLD_LIBRARY_PATHRs/etc/ld.so.conftrRXit*smkl*R"(R$RRRR@RR%RBtopenR1RCtsept startswithR&tindexRR ( RtmklrootRt ld_so_confRHR(tintel_mkl_dirsR%t path_atomstmR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytget_mkl_rootdirs4 !    #    ! cC`s|j}|dkr(tj|nddlm}|jrMd}n'|jrn|jrnd}nd}tj|dt j j |d|gdt j j |d gdS( Ni(tcpuRtintel64t32R+R"R-R!( R|RRRtcpuinfoR}t is_Itaniumtis_Inteltis_64bitR$R%R&(RRwR}tplt((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs     cC`s|j}|j}|jd|j}|j||}|dkrOdSt|dd d gd|tjdkr}nt|ddg|j |dS( Ntmkl_libsRXt SCIPY_MKL_Ht HAVE_CBLASRRRtpthread(RN(RN( RR.R4t_lib_mklRCRRR>R9R(RR@R[RR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR .s     (RRRRRR|RR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs    RcB`seZRS((RR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR@sRcB`seZRS((RR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRDsRcB`sreZdZdZddgZejd dkrFdgZdgZndgZdgZe Z d Z d Z RS( RLtATLAStf77blastcblasitfreebsdtatlas_rt alapack_rRlc C`stj|||}g}x=|D]5}|j|j|dddddg|gq"Wg|D]}tjj|rb|^qbS(Nsatlas*sATLAS*tsset3dnowtsse2(RR-RRDR$R%R (RRRRjRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR-Us  cC`s|j}i}|jd|j|j}|jd|j}d}d}d}x|D]}|j||g}|j|dgg} |dk r|g|j|ddg} |j| |g}|dk rPqn|r\|}q\q\Wtj |j |dkr|}n|dkr*dS|j } |j|| dpRdg} | d} | rt j j| } t|d| gnd |d <|dk rt||t||nd|d krt||t|d dg|j|dSt||t|d dgd} tj| dd|j|dS|dd}|d d}d}dg}tjdkr|jdnxh|jD]Z}xG|D]?}t j j||||}t j j|r|}PqqW|rPqqW|dk rbt j|d}|dkrUd||df} tj| ddqbd|d 4000k) Follow the instructions in the KNOWN PROBLEMS section of the file numpy/INSTALL.txt. ********************************************************************* tf77(RN(RNi>(RR4Rt _lib_atlast _lib_lapackRRCRDR RRR.R$R%RRRR RR>R9RCR>R&texistststattget_atlas_version(RR@RRRRLRltatlas_1R(RPt lib_dirs2Rthtmessaget lapack_dirt lapack_namet lapack_libRGR$RHtfntszt atlas_versiontatlas_extra_info((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR ]s                          ( RRRRRR>R9RRRRR-R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRHs      RcB`seZddgZdZRS(RRc C`s |j}i}|jd|j|j}|j||g}|dkrSdS|j}|j||dp{dg}|d}|rtj j |}t |d|gnd|d  !       (0044+(RRRRRRR-R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR-s  s /* This file is generated from numpy/distutils/system_info.py */ void ATL_buildinfo(void); int main(void) { ATL_buildinfo(); return 0; } c K`s|jdg}|jdg}t|t|f}|tkrPt|Stt}d}i}y|jtd|d|dtj dk\}}|r+t j d|t j r+|jtd|dgd|dtj dk\}}|s+t jddd t|d d d dgq+nWntk rxH|D]@}t j d|} | rs| jd}n|dk rCPqCqCW|dkrtjjdd}n|rt|d dd|fgnt|d dg|pd|fSX|s(t j d|} | r(| jd}q(n|dkrxt j d|t j rUd}qxtjd|tjd|n|dkrt|d dgnt|d dd|fg||f} t|<| S(NRRtuse_teeis!undefined reference to `_gfortrantgfortrans3 ***************************************************** Linkage with ATLAS requires gfortran. Use python setup.py config_fc --fcompiler=gnu95 ... when building extension libraries that use ATLAS. Make sure that -lgfortran is used for C++ extensions. ***************************************************** R iRtf90RXtATLAS_REQUIRES_GFORTRANs#ATLAS_(?P\d+[.]\d+[.]\d+)_tversiont ATLAS_VERSIONt ATLAS_INFOs"\"%s\""t NO_ATLAS_INFOis?.?.?s*ATLAS version (?P\d+[.]\d+[.]\d+)sundefined symbol: ATL_buildinfos3.2.1_pre3.3.6s Status: %ds Output: %si(RN(Ri(Ri(Rttuplet_cached_atlas_versiont cmd_configRRt get_outputtatlas_version_c_textRRtretsearchtMR RRt ExceptiontgroupR$RR R( RRRRR;RRtstoR{tresult((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRsf               RcB`seZeZdZRS(c C`std}|r#|j|dStd}|rF|j|dStd}|ri|j|dStd}|std}n|std}n|std}ntd}|r| r|j|dSd }d }i}|r2|jd g}d|ks d|kr)d }n|}n5tjtjddd }d }t|d dg|rtd} | rt|| qtjt jddtd} | stjt jdddSt|dd| fgn|rstd} | rt|| qstjt jddtd} | sWtjt jdddSt|dd| fgn|j|dS(NR]RZR[RSRRRMRLR_iRXRRiR iRRlRmRt flapack_srcRkRnt fblas_src(RN(RN(Ri( RRRRR RRRRRRRR( RRRRRt need_lapackt need_blasRR%RRRR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR st                   (RRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRsRcB`seZeZdZRS(c C`std}|r#|j|dStd}|rF|j|dStd}|ri|j|dStd}|std}n|std}n|std}ntd}|r| r|j|dSd }i}|r|}n/tjtjd d d }t|d dg|rtd}|rPt||qtjtjd d td} | stjtjd d dSt|dd| fgn|j|dS(NR^R\RYRURTRORNR_iR iiRXRRkRnRR(Ri( RRR RRRRRR( RRRRRRRRRR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR IsT              (RRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyREsRcB`s5eZdZdZdgZeZdZdZRS(RktBLAScC`s|j}|jd|j}|j||g}|dkrFdS|j|d int main(int argc, const char *argv[]) { double a[4] = {1,2,3,4}; double b[4] = {5,6,7,8}; return cblas_ddot(4, a, 1, b, 1) > 10; }ssource.ctwtt output_dirRsa.outRRRtextra_postargsRRk(RERttempfiletmkdtempR$R%R&RstwritetcompileR.tlink_executableRt distutilst ccompilert LinkErrort CompileErrorRtshutiltrmtree( RRRR;ttmpdirRR:RHtobj((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs6       ( RRRRRRRR R(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs   RcB`s>eZdZdZdgZeZdZdZdZ RS(RYtOPENBLAScC`stS(N(RY(RR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytcheck_embedded_lapacksc C`sLt}|j}|jd|j}||jkrQ|jd|j}n|j||g}|jdkr|dkrddlm}|d|}|r|jdkr|j ||}t }qn|rt }d|d t version_infoR8RCRsRRRRYRRRRR( RRRR;RRR:Rt extra_argsRHR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs2    -  (RRRRRRRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs  RcB`seZddgZRS(RYRl(RRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR>sRcB`s,eZdZdZdgZeZdZRS(R\tBLIScC`s|j}|jd|j}||jkrH|jd|j}n|j||g}|dkrmdS|j}t|ddddgd||j|dS( NRt blis_libsRR;RXRR(RN(RR4RRCRR.RR(RR@RRR[((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR Gs     (RRRRRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRAs  RcB`seZdZeZdZRS(R_c C`stjjd}|r$|g}n|jdddg}g|D]}|jj^qC}tjdkrtjdd rg}g}t ddksd t ksd t ksdtjkrd }nd }tj j d rNd|krN|r|j dgn|j dg|j dg|j ddgnmtj j drd|kr|r|j dgn|j dg|j dg|j ddgn|r|jd|d|dddgqndS(Nt ACCELERATERR_tveclibR7t_PYTHON_HOST_PLATFORMiti386tinteltx86_64iis0/System/Library/Frameworks/Accelerate.framework/s-msse3s -faltivecs5-I/System/Library/Frameworks/vecLib.framework/Headerss-Wl,-frameworks-Wl,Accelerates,/System/Library/Frameworks/vecLib.framework/s -Wl,vecLibRRRXRiR(Ri(RN(R$RRR4R1RR>R9tgetenvRR R%RRR(RRR"RPt link_argsR ((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR ]sH %"     (RRRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRYsRcB`s,eZdZdZeZdZdZRS(RntBLAS_SRCcC`sxtj|||}g}x1|D])}|j|g|j|dgq"Wg|D]}tjj|rV|^qVS(NRk(RR-RRDR$R%R (RRRRjRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR-s  'c C`s|j}d}x9|D]1}tjjtjj|dr|}PqqW|sXdSd}d}d}g|||jD]}tjj||d^q}g|D]}tjj|r|^q}i|d6dd 6} |j| dS( NRsdaxpy.fso caxpy csscal dnrm2 dzasum saxpy srotg zdotc ccopy cswap drot dznrm2 scasum srotm zdotu cdotc dasum drotg icamax scnrm2 srotmg zdrot cdotu daxpy drotm idamax scopy sscal zdscal crotg dcabs1 drotmg isamax sdot sswap zrotg cscal dcopy dscal izamax snrm2 zaxpy zscal csrot ddot dswap sasum srot zcopy zswap scabs1 s cgbmv chpmv ctrsv dsymv dtrsv sspr2 strmv zhemv ztpmv cgemv chpr dgbmv dsyr lsame ssymv strsv zher ztpsv cgerc chpr2 dgemv dsyr2 sgbmv ssyr xerbla zher2 ztrmv cgeru ctbmv dger dtbmv sgemv ssyr2 zgbmv zhpmv ztrsv chbmv ctbsv dsbmv dtbsv sger stbmv zgemv zhpr chemv ctpmv dspmv dtpmv ssbmv stbsv zgerc zhpr2 cher ctpsv dspr dtpsv sspmv stpmv zgeru ztbmv cher2 ctrmv dspr2 dtrmv sspr stpsv zhbmv ztbsv s cgemm csymm ctrsm dsyrk sgemm strmm zhemm zsyr2k chemm csyr2k dgemm dtrmm ssymm strsm zher2k zsyrk cher2k csyrk dsymm dtrsm ssyr2k zherk ztrmm cherk ctrmm dsyr2k ssyrk zgemm zsymm ztrsm s.fR RR(R/R$R%RBR&R@R( RRRR(tblas1tblas2tblas3RHR R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR s   ! 7+(RRRRRRR-R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs  RcB`s&eZdZeZdZdZRS(R`cC`stj|dtdtdS(NR+R-(RRtdefault_x11_lib_dirstdefault_x11_include_dirs(R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs cC`stjdkrdS|j}|j}|jddg}|j||g}|dkredSd}x*|D]"}|j|drr|}PqrqrW|dk rt|d|gn|j |dS(NRtx11_libstX11sX11/X.hR(R( R>R9RR.R4RRRDRR(RR@RRRtinc_dirR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR s      (RRRRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs t _numpy_infocB`s,eZdZdZeZdZdZRS(RqcC`sg}yt|j}g}x:|jjtjD]#}|dkrJPn|j|q4Wy|jt|dWntk rnX|jt j j dtjj |Wnt k rnXt j j }|j|t j j dt}||kr|j|nxKtD]C}tjj |tjj|}||kr|j|qqWtj|dgd|dS(NR"t get_includeRHt plat_specificR+R-(t __import__t modulenameR<R@R$RtRCRtAttributeErrorRt sysconfigtget_python_incR&t ImportErrorRYR-R%RRR(RRtmoduleRHRt py_incl_dirt py_pincl_dirR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs8      !  c C`s?yt|j}Wntk r'dSXi}g}xkddgD]]}t||d}|dkrkqAn|jjdd|f|jjdfg}PqAWt|d||j}d}x<|D]4}|j|t j j |jdr|}PqqW|dk r%t|d|gn|r;|j |ndS(Nt __version__Rt_VERSIONs"\"%s\""RXs arrayobject.hR( RRR RRtupperRR.RDR$R%R&R( RR!RRTRtvrsRRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR s8        (RRRRRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs  "RcB`seZdZdZRS(Rs(RRRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR$sRcB`seZdZdZRS(Rq(RRRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR)sRcB`seZdZdZRS(Ro(RRRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR.sRcB`seZdZdZRS(RtcC`sd }tjdr-tjddf}n|ddkrd }yddl}d }Wqtk rtt}yddl}d }Wqtk rtt}yddl}d}Wqtk r tt}t j |t j |t j |qXqXqXn|dj j |df}|ddkrit d |d|dfn|dtjd<|jt|ddS(NtNUMERIXsenvironment variRot defaultedRrRsisonumerix selector must be either 'Numeric' or 'numarray' or 'numpy' but the value obtained from the %s was '%s'.(NN(RoR)(RoR)(RrR)(RsR)(RrRsRo(RR$R RoR RRRqRsR RR1RRRRR(RtwhichRotmsg1Rqtmsg2Rstmsg3((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR 6s:            (RRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR3sRcB`seZdZRS(cC`s{yddlj}Wntk r'dSXtjjtjj|jd}|jdtjj|dgd|gdS(NiR:R sfortranobject.cR( t numpy.f2pyRpR R$R%R&RR<R(RRptf2py_dir((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR Ys $! (RRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRXsRcB`s&eZdZdZdZdZRS(RwtBOOSTcC`sxtj|||}g}x1|D])}|j|g|j|dgq"Wg|D]}tjj|rV|^qVS(Nsboost*(RR-RRDR$R%R (RRRRjRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR-hs  'c C`sK|j}d}xB|D]:}tjjtjj|ddddr|}PqqW|sadStjjg}tjjdt}||kr|j |ntjj|ddd}t tjj|d}|t tjj|dd7}id i|g|d 6|d 6fgd 6|gd 6}|rG|j |ndS( NRRtpythonR:s module.cppRs*.cppRrtboost_python_srcRR R( R/R$R%RBR&RRRRYRCRR( RRRR(t py_incl_dirsR#tsrcs_dirtbpl_srcsR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR os.    " (RRRRR-R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRds RcB`s&eZdZdZdZdZRS(RxtAGG2cC`sxtj|||}g}x1|D])}|j|g|j|dgq"Wg|D]}tjj|rV|^qVS(Nsagg2*(RR-RRDR$R%R (RRRRjRR(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR-s  'cC`s=|j}d}x<|D]4}tjjtjj|ddr|}PqqW|s[dStjdkrttjj|dddd}nCttjj|dd}|tjj|dddd g7}id i|d 6tjj|d gd 6fgd6tjj|d gd 6}|r9|j|ndS(NRR:sagg_affine_matrix.cppRR9sagg_win32_bmp.cpps*.cppRsagg_platform_support.cpptagg2_srcR R!RR( R/R$R%RBR&R>R9RR(RRRR(t agg2_srcsR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR s.  $  #(RRRRR-R (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRs t_pkg_config_infocB`sSeZdZdZdZdZdZdZdZ dZ dZ dZ dZ RS( t PKG_CONFIGs pkg-configRs --modversions--cflagscC`s'|jtjkr tj|jS|jS(N(tconfig_env_varR$Rtdefault_config_exe(R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytget_config_exescC`s?|d|jd|}t|dd\}}|s;|SdS(Nt Ri(tappend_config_exeR (Rt config_exetoptiontcmdRR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytget_config_outputscC`s7t|j}|s6tjd||jfdSi}g}g}g}g}g}g}|j||j} | r|j|jj j ddj d| f|j r|j|j d| j dddfqn|jr5|j|d} | r5|j|jd| j dddfq5n|j|d} | rxl| j D][} | d d kr|j| d qZ| d d kr|j| d qZ|j| qZWn|j||j} | rx| j D]} | d d kr|j| d q| d d krsd| krY| d j d\} }|j| |fq|j| d dfq|j| qWn|rt|d|n|rt|d|n|rt|d|n|rt|d|n|rt|d|n|rt|d|n|r3|j|ndS(Ns-File not found: %s. Cannot determine %s info.R is"\"%s\""s_%st_s --releases--libsis-ls-Ls-Is-Dt=RXRRRRR(R R=R RRRCt version_flagRCRRR@R&tversion_macro_nametreplaceRtrelease_macro_namet cflags_flagRR(RR@RRTRRRRRRtreleasetoptsRtnR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR st " ! ! N(RRRRR;R<R?RGRIRFRJR=RCR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR9s  RcB`s8eZdZdZdZdZdZdZdZdZ RS(Ryt WX_CONFIGs wx-configRt WX_VERSIONt WX_RELEASEs --versions --cxxflags( RRRR;R<R?RGRIRFRJ(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR sRcB`seZdZdZdZRS(Rzsgdk-pixbuf-xlib-2.0tGDK_PIXBUF_XLIB_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR sRcB`seZdZdZdZRS(R{sgdk-pixbuf-2.0tGDK_PIXBUF_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR sRcB`seZdZdZdZRS(R~s gdk-x11-2.0tGDK_X11_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR! sRcB`seZdZdZdZRS(R}sgdk-2.0t GDK_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR' sRcB`seZdZdZdZRS(R|RT(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR- sRcB`seZdZdZdZRS(Rs gtk+-x11-2.0tGTK_X11_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR3 sRcB`seZdZdZdZRS(Rsgtk+-2.0t GTK_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR9 sRcB`seZdZdZdZRS(Rt XFT_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR? sRcB`seZdZdZdZRS(RtFREETYPE2_VERSION(RRRR?RG(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRE sRcB`s&eZdZdZdgZdZRS(RtAMDc C`s|j}|jd|j}|j||g}|dkrFdS|j}d}x@|D]8}|j|d}|r_tjj |d}Pq_q_W|dk rt |d|gdd gdd|gn|j |dS( Ntamd_libssamd.hiRRXt SCIPY_AMD_Ht swig_optss-I(R[N( RR4RRRR.RDR$R%RRR(RR@RZRRRR(R((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR P s$       (RRRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRK s RcB`s,eZdZdZeZdgZdZRS(RtUMFPACKc C`s |j}|jd|j}|j||g}|dkrFdS|j}d}xI|D]A}|j|ddgd}|r_tjj |d}Pq_q_W|dk rt |d|gdd gd d |gnt d }t |t d |j |dS( Nt umfpack_libsRRs umfpack.hiRRXtSCIPY_UMFPACK_HR\s-IR(R_N( RR4RRRR.RDR$R%RRRR( RR@R^RRRR(RR((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR o s(        (RRRRRRRR (((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRi s  cO`s8g}x?|D]7}|sq nt|r7|g}n|j|q W|}|sXgSt|dkrtdtt|dg}nt|dkrg}xq|dD]=}x4|dD](}|jttjj ||qWqWn%t t |d|d|d}t j ddj ||S(sc Return a list of existing paths composed by all combinations of items from arguments. icS`s||S(N((R3R&((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyt siis (paths: %s)R0( RRCRRtmapRRR$R%R&RDR R!(RPtkwsRqR3Rta0ta1((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyRD s(   %-%R;isc++iRRcK`sg}x|jD]\}}|dkr>|j|qn||kr|d krg|D])}|||kr]||j|^q]q||j|q|||R?RtRmR t set_thresholdtDEBUGtINFORCtglobalsRRtisclasst issubclassRRvRRRR&( R?RvRLRPt show_onlyRMtshow_allt_gdict_RR;tconfRq((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pyR~ s8         t__main__(Rt __future__RRRR>R$RRR tatexitRt functoolsRRRRRt configparsertdistutils.errorsRtdistutils.distRtdistutils.sysconfigRR tdistutils.utilR tnumpy.distutils.exec_commandR R R tnumpy.distutils.misc_utilRRRtnumpy.distutils.command.configRRtnumpy.distutils.compatRtnumpy.distutilsRtdistutils.ccompilerRRR9t_bitst architecturet platform_bitsRR%R&Rt EXEC_PREFIXR+RR-RRRR.R,R(RHRtR/R*R0Rt vcpkg_dirt specifiertvcpkg_installedt vcpkg_rootR4t conda_dirRtglobbed_x11_dirR@t x11_so_dirRt subprocesstspRRRstdevnulltPopentPIPERtOSErrorRt communicatetdecodeR1ttriplett returncodetcloseRHtinsertRCt_mR R:RKRRRRRRRRRRRRtobjectRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR9RRRRRRRRRRRRRDRgReRRtR~R(((s:/tmp/pip-build-fiC0ax/numpy/numpy/distutils/system_info.pytys~            '    ((   "        "# ""++++  $ LV.       $Dn{ IO;IL)54F% '*U " ""