bg dZddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl m ZddlmZddlmZddlZdd lmZdd lmZdd lmZmZdd lmZmZmZdd lm Z!ddlm"Z#ddlm$Z$ddl%Z&ddl'Z'ddl(Z(dgZ)ddl*Z*dddZ+e+e*j,dZ-da.dZ"dZ/dZ0ej*dkr~dej12ej3ddga4gZ5ga6dgZ7gZ8gZ9ddgZ:dgZ;de:DZ:d e;DZ;d!Z<e(j=d"Z>e>rej1?e>Z@e*j,dd#krd$ZAnd%ZAej12e@d&ZBej12eBeAd'zej12eBeAd(zfD] ZCetlDa6d?e7DZ7eZ[d@Z\dAZ]ddBZ^GdCdDeZ_GdEdFeZ`GdGdHe_ZaGdIdJe_ZbGdKdLe_ZcGdMdNecZdGdOdPe_ZeGdQdRe_ZfGdSdTe_ZgGdUdVe_ZhGdWdXegZiGdYdZe_ZjGd[d\e_ZkGd]d^e_ZlGd_d`e_ZmGdadbe_ZnGdcdZoGdddeeoZpGdfdgeoZqGdhdieqZrGdjdkeqZsGdldmeqZtGdndoeqZuGdpdqeqZvGdrdseqZwGdtdueqZxGdvdweqZyGdxdyeoZzGdzd{eoZ{Gd|d}e{Z|Gd~de{Z}GddeoZ~Gdde~ZGdde~ZGddeoZGddeZGddeZGddeoZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeoZGddeoZdZiZdZGddeoZGddZGddeeZGddeZGddeZGddeoZGddeeZGddeZGddeZGddeoZGddeoZGddeZGd„deZGdĄdeZGdƄdeZGdȄdeZGdʄdeZGd̄deeZGd΄deZGdЄdeoZGd҄deoZGdԄdeoZGdքdeoZGd؄deoZGdڄdeZGd܄deZGdބdeZGddeoZGddeoZGddeoZGddeoZGddeoZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeoZGddeoZdZdddddZddd d d ZÐd ZĐddZŐd dZeǐdkr eƦdSdS(a This file defines a set of system_info classes for getting information about various resources (libraries, library directories, include directories, etc.) in the system. 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 is not intended for general use. 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. DEFAULT section in site.cfg 4. System default search paths (see ``default_*`` variables below). Only the first complete match is returned. Currently, the following classes are available, along with their section names: Numeric_info:Numeric _numpy_info:Numeric _pkg_config_info:None accelerate_info:accelerate agg2_info:agg2 amd_info:amd atlas_3_10_blas_info:atlas atlas_3_10_blas_threads_info:atlas atlas_3_10_info:atlas atlas_3_10_threads_info:atlas atlas_blas_info:atlas atlas_blas_threads_info:atlas atlas_info:atlas atlas_threads_info:atlas blas64__opt_info:ALL # usage recommended (general ILP64 BLAS, 64_ symbol suffix) blas_ilp64_opt_info:ALL # usage recommended (general ILP64 BLAS) blas_ilp64_plain_opt_info:ALL # usage recommended (general ILP64 BLAS, no symbol suffix) blas_info:blas blas_mkl_info:mkl blas_ssl2_info:ssl2 blas_opt_info:ALL # usage recommended blas_src_info:blas_src blis_info:blis boost_python_info:boost_python dfftw_info:fftw dfftw_threads_info:fftw djbfft_info:djbfft f2py_info:ALL fft_opt_info:ALL fftw2_info:fftw fftw3_info:fftw3 fftw_info:fftw fftw_threads_info:fftw flame_info:flame freetype2_info:freetype2 gdk_2_info:gdk_2 gdk_info:gdk gdk_pixbuf_2_info:gdk_pixbuf_2 gdk_pixbuf_xlib_2_info:gdk_pixbuf_xlib_2 gdk_x11_2_info:gdk_x11_2 gtkp_2_info:gtkp_2 gtkp_x11_2_info:gtkp_x11_2 lapack64__opt_info:ALL # usage recommended (general ILP64 LAPACK, 64_ symbol suffix) lapack_atlas_3_10_info:atlas lapack_atlas_3_10_threads_info:atlas lapack_atlas_info:atlas lapack_atlas_threads_info:atlas lapack_ilp64_opt_info:ALL # usage recommended (general ILP64 LAPACK) lapack_ilp64_plain_opt_info:ALL # usage recommended (general ILP64 LAPACK, no symbol suffix) lapack_info:lapack lapack_mkl_info:mkl lapack_ssl2_info:ssl2 lapack_opt_info:ALL # usage recommended lapack_src_info:lapack_src mkl_info:mkl ssl2_info:ssl2 numarray_info:numarray numerix_info:numerix numpy_info:numpy openblas64__info:openblas64_ openblas64__lapack_info:openblas64_ openblas_clapack_info:openblas openblas_ilp64_info:openblas_ilp64 openblas_ilp64_lapack_info:openblas_ilp64 openblas_info:openblas openblas_lapack_info:openblas sfftw_info:fftw sfftw_threads_info:fftw system_info:ALL umfpack_info:umfpack wx_info:wx x11_info:x11 xft_info:xft Note that blas_opt_info and lapack_opt_info honor the NPY_BLAS_ORDER and NPY_LAPACK_ORDER environment variables to determine the order in which specific BLAS and LAPACK libraries are searched for. This search (or autodetection) can be bypassed by defining the environment variables NPY_BLAS_LIBS and NPY_LAPACK_LIBS, which should then contain the exact linker flags to use (language will be set to F77). Building against Netlib BLAS/LAPACK or stub files, in order to be able to switch BLAS and LAPACK implementations at runtime. If using this to build NumPy itself, it is recommended to also define NPY_CBLAS_LIBS (assuming your BLAS library has a CBLAS interface) to enable CBLAS usage for matrix multiplication (unoptimized otherwise). Example: ---------- [DEFAULT] # default section 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] libraries = rfftw, fftw [atlas] library_dirs = /usr/lib/3dnow:/usr/lib/3dnow/atlas # for overriding the names of the atlas libraries libraries = lapack, f77blas, cblas, atlas [x11] library_dirs = /usr/X11R6/lib include_dirs = /usr/X11R6/include ---------- Note that the ``libraries`` key is the default setting for libraries. 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. N)glob)reduce) NoOptionError)RawConfigParser)DistutilsError) Distribution)log) get_platform)find_executablefilepath_from_subprocess_output) is_sequence is_stringget_shared_lib_extension)config)customized_ccompiler) _shell_utils system_info @)32bit64bitc:tstatSN)global_compiler_customized_ccompilern/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/numpy/distutils/system_info.pyrrs 2/11 rc|dd}|dd}|dd}d|S)zS Convert a python string into a literal suitable for inclusion into C code \z\\"z\" z\nz"{}")replaceformat)ss r_c_string_literalr&sO $A #A $A ==  rc~|dvrtd|dkr|Sg}|D]}||dz|g|S)aReturn 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'] )rrz+Invalid bit size in libpaths: 32 or 64 onlyr64) ValueErrorextend)pathsbitsoutps rlibpathsr/sf0 8FGGG rzz  C "" AHa=!!!! Jrwin32zC:\ exec_prefixlibs.includezinclude/suitesparselibcNg|]"}|dtj#S/r#ossep.0ds r r?"s(CCCQYYsBF++CCCrcNg|]"}|dtj#Sr7r9r<s rr?r?#s(;;;A3'';;;rctjtfdt Dt fdtDdS)z5Add a package manager root to the include directoriesc3XK|]$}tj|V%dSrr:pathjoinr=r> library_roots r z"add_system_root..+sD > >./BGLLq ) ) > > > > > >rc3XK|]$}tj|V%dSrrCrFs rrHz"add_system_root..-sL$B$B./BGLLq ) )$B$B$B$B$B$BrN)r:rDnormpathdefault_lib_dirsr* _lib_dirsdefault_include_dirs _include_dirs)rGs`radd_system_rootrO$s w'' 55  > > > >3< > > > > > >##$B$B$B$B3@$B$B$B B B B B Brvcpkgrx86x64 installedz-windowsz-windows-staticconda..Library)z/usr/local/libz/opt/lib/usr/libz/opt/local/libz/sw/lib)z/usr/local/includez /opt/includez/opt/local/include/ufsparsez/opt/local/includez /sw/includez/usr/include/suitesparse)r3z/usr/local/srcz/opt/srcz/sw/src)z/usr/X11R6/libz /usr/X11/librWz/usr/X11R6/includez/usr/X11/includez /usr/lib/X11z/usr/lib/*/libX11.soz/usr/lib/X11/includez/usr/include/X11wgccz-print-multiarch)stdoutstderrz /usr/lib/srccPg|]#}tj|!|$Srr:rDisdirr=_ms rr?r?u+GGG2RW]]25F5FGBGGGrcPg|]#}tj|!|$Srr^r`s rr?r?v+OOOrRW]]2=N=NOOOOrcPg|]#}tj|!|$Srr^r`s rr?r?wrdrcPg|]#}tj|!|$Srr^r`s rr?r?xrbrc4g} t}n"#t$rtjd}YnwxYwtjtjtj|d|}tj |r| | tj d}tj||}tj |r| |n#t$rYnwxYwtj |r2| tj||S)zReturns 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 r~) __file__ NameErrorsysargvr:rDrEsplitabspathisfileappend expanduserKeyError)fname filenamesfsysfile user_files rget_standard_filerx}sbI   HQKgll27==););<>) $ $ (   Y ' ' '       w~~e1//000 s ++D77 EEc,tj|d}d|D}||gfS|dp|d}t |}|d|dz}|r&|dkrt d|d||dd}n|dkrt d|d ||d }g}|rP| }|D]8} | s| |vr| | | |vr| | 9n=g}|D]8} | s| |vr| | | |vr| | 9||fS) aK Parse an environment variable `env` by splitting with "," and only returning elements from `base_order` This method will sequence the environment variable and check for their individual elements in `base_order`. The items in the environment variable may be negated via '^item' or '!itema,itemb'. It must start with ^/! to negate all options. Raises ------ ValueError: for mixed negated and non-negated orders or multiple negated orders Parameters ---------- base_order : list of str the base list of orders env : str the environment variable to be parsed, if none is found, `base_order` is returned Returns ------- allow_order : list of str allowed orders in lower-case unknown_order : list of str for values not overlapping with `base_order` Nc6g|]}|Sr)lower)r=orders rr?z$_parse_env_order..s 888E%++--888r^!zEnvironment variable 'z1' may only contain a single (prefixed) negation: rz,' may not mix negated an non-negated items: ,) r:environget startswithlistcountr)r{rmcopyrpremove) base_orderenv order_strneg order_str_lsum_negorders unknown_order allow_orderr|s r_parse_env_orderrs 6 sD))I98Z888J2~   s # # @y';';C'@'@Cy//K$${'8'8'='==G p Q;;wcwwluwwxx xabbM 1n#nnclnnooo__   $ $S ) )FM * oo''  * *E J&&$$U+++ ##""5))) *  * *E J&&$$U+++K''""5)))  %%rcidtdtdtdtdtdt dt dtd td td td td tdtdtdtdt idt"dt$dt&dt(dt*dt,dt.dt0dt2dt4dt6dt8dt:dt<d t>d!t@d"tBid#tDd$tFd%tHd&tJd'tLd(tNd)tPd*tRd+tTd,tVd-tXd.tZd/t\d0t^d1t`d2tbd3tbid4tdd5tfd6thd7tjd8tld9tnd:tpd;trdtxd?tzd@t|dAt~dBt~dCtdDttttttttttttttdE J|Kt}|M|S)Fzg notfound_action: 0 - do nothing 1 - display warning message 2 - raise error armpl blas_armpl lapack_armpl fftw3_armplatlas atlas_threads atlas_blasatlas_blas_threads lapack_atlaslapack_atlas_threads atlas_3_10atlas_3_10_threadsatlas_3_10_blasatlas_3_10_blas_threadslapack_atlas_3_10lapack_atlas_3_10_threadsflamemklssl2openblasopenblas_lapackopenblas_clapackblis lapack_mklblas_mkl lapack_ssl2 blas_ssl2 accelerate openblas64_openblas64__lapackopenblas_ilp64openblas_ilp64_lapackx11fft_optfftwfftw2fftw3dfftwsfftw fftw_threads dfftw_threads sfftw_threadsdjbfftblaslapack lapack_srcblas_srcnumpyf2pyNumericnumericnumarraynumerix lapack_optlapack_ilp64_optlapack_ilp64_plain_opt lapack64__optblas_optblas_ilp64_optblas_ilp64_plain_opt blas64__opt boost_pythonagg2wxgdk_pixbuf_xlib_2gdk-pixbuf-xlib-2.0 gdk_pixbuf_2gdk-pixbuf-2.0) gdkgdk_2gdk-2.0 gdk_x11_2 gdk-x11-2.0 gtkp_x11_2 gtk+-x11-2.0gtkp_2gtk+-2.0xft freetype2umfpackamd)N armpl_infoblas_armpl_infolapack_armpl_infofftw3_armpl_info atlas_infoatlas_threads_infoatlas_blas_infoatlas_blas_threads_infolapack_atlas_infolapack_atlas_threads_infoatlas_3_10_infoatlas_3_10_threads_infoatlas_3_10_blas_infoatlas_3_10_blas_threads_infolapack_atlas_3_10_infolapack_atlas_3_10_threads_info flame_infomkl_info ssl2_info openblas_infoopenblas_lapack_infoopenblas_clapack_info blis_infolapack_mkl_info blas_mkl_infolapack_ssl2_infoblas_ssl2_infoaccelerate_infoopenblas64__infoopenblas64__lapack_infoopenblas_ilp64_infoopenblas_ilp64_lapack_infox11_info fft_opt_info fftw_info fftw2_info fftw3_info dfftw_info sfftw_infofftw_threads_infodfftw_threads_infosfftw_threads_info djbfft_info blas_info lapack_infolapack_src_info blas_src_info numpy_info f2py_info Numeric_info numarray_info numerix_infolapack_opt_infolapack_ilp64_opt_infolapack_ilp64_plain_opt_infolapack64__opt_info blas_opt_infoblas_ilp64_opt_infoblas_ilp64_plain_opt_infoblas64__opt_infoboost_python_info agg2_infowx_infogdk_pixbuf_xlib_2_infogdk_pixbuf_2_infogdk_info gdk_2_infogdk_x11_2_infogtkp_x11_2_info gtkp_2_infoxft_infofreetype2_info umfpack_infoamd_inforr{rget_info)namenotfound_actioncls rr.r.s}S ':S S +S  )S  : S - S  S   7S  +S  !";S  S   7S  1S  $%AS  5S  &'ES :!S S " #S $ )%S ( m)S , 1-S . 3/S 0 )1S 2 3S 4 m5S 6 )7S 8 ~9S : ;S < )=S >  7?S @ /AS B "#=CS D ES F \GS S S H )IS J :KS L :MS N :OS P :QS R +SS T -US V -WS X KYS Z )[S \ K]S ^ _S ` maS b :cS d )eS f \gS h \iS S S j mkS l \mS n oS p 3qS r #$?sS t -uS v mwS x /yS z !";{S | )}S ~ +S @ )AS B CS D 5ES F !7GS H +IS J -KS S L%'')!%!eS S S f C k * *gh 244== ) ))rceZdZdZdS) NotFoundErrorz1Some third-party program or library is not found.N__name__ __module__ __qualname____doc__rrrr3r3Rs;;;;rr3ceZdZdZdS)AliasedOptionErrorz Aliases entries in config files should not be existing. In section '{section}' we found multiple appearances of options {options}.Nr4rrrr:r:Vs"RRRRrr:ceZdZdZdS)AtlasNotFoundErrorz Atlas (http://github.com/math-atlas/math-atlas) 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.Nr4rrrr<r<\s''''rr<ceZdZdZdS)FlameNotFoundErrorz FLAME (http://www.cs.utexas.edu/~flame/web/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [flame]).Nr4rrrr>r>ds8888rr>ceZdZdZdS)LapackNotFoundErrorz 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.Nr4rrrr@r@k((((rr@ceZdZdZdS)LapackSrcNotFoundErrorz 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.Nr4rrrrCrCss,,,,rrCceZdZdZdS)LapackILP64NotFoundErrorz 64-bit Lapack libraries not found. Known libraries in numpy/distutils/site.cfg file are: openblas64_, openblas_ilp64 Nr4rrrrErE{rrEceZdZdZdS)BlasOptNotFoundErrorz Optimized (vendor) Blas libraries are not found. Falls back to netlib Blas library which has worse performance. A better performance should be easily gained by switching Blas library.Nr4rrrrHrHsrrHceZdZdZdS)BlasNotFoundErrorz 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.Nr4rrrrJrJ&&&&rrJceZdZdZdS)BlasILP64NotFoundErrorz 64-bit Blas libraries not found. Known libraries in numpy/distutils/site.cfg file are: openblas64_, openblas_ilp64 Nr4rrrrMrMrFrrMceZdZdZdS)BlasSrcNotFoundErrorz 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.Nr4rrrrOrOs****rrOceZdZdZdS)FFTWNotFoundErrorz 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.Nr4rrrrQrQrKrrQceZdZdZdS)DJBFFTNotFoundErrorz DJBFFT (https://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.Nr4rrrrSrSrArrSceZdZdZdS)NumericNotFoundErrorzw Numeric (https://www.numpy.org/) module not found. Get it from above location, install it, and retry setup.py.Nr4rrrrUrUs"CCCCrrUceZdZdZdS)X11NotFoundErrorzX11 libraries not found.Nr4rrrrWrWs""""rrWceZdZdZdS)UmfpackNotFoundErrora UMFPACK sparse solver (https://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.Nr4rrrrYrYs))))rrYceZdZdZdZdZdZiZeZ e e fdZ dZ dZdZd Zd Zd Zd d Zd Zd!dZd"dZd#dZd$dZdZd%dZdZgfdZgfdZdZdZdZ dZ!dS)&rz= get_info() is the only public method. Don't use others. NrALLc i|j_g|_tj|tj|tjt dtjtt|j ddd}t||_ g|_ |j td|j td||j%|j |jd|_ t%|j t&sJdS)N) library_dirs include_dirsruntime_library_dirsrpathsrc_dirssearch_static_firstextra_compile_argsextra_link_argsz.numpy-site.cfgzsite.cfgrc) __class__infolocal_prefixesr:pathseprEdefault_runtime_dirsdefault_src_dirsstrrc ConfigParsercpfilesr*rxparse_config_filessection getboolean isinstanceint)selfrKrMdefaultss r__init__zsystem_info.__init__s4! $&JOO4D$E$E$&JOO4H$I$I,.JOO>??? +J77888 !!! < #'+w'9'9 3(5(5D $$2C8888888rc|j|j|j|js(|j#|j|jdSdSdSr)rnreadro has_sectionrq add_sectionrus rrpzsystem_info.parse_config_filessh  TZ   w""4<00 2|'##DL11111 2 2''rc|}|}|}||di}|D]}|||g}|t |fi|nt jd|z|rY|||g}|)|d=|d|d<t |fi|t jd|z|S)Nra)keyz"Library %s was not found. Ignoring librariesr^r`z*Runtime library %s was not found. Ignoring) get_libraries get_lib_dirsget_runtime_lib_dirsr* check_libs dict_appendr rgpop)rur2dirsr_dirsrgr5is rcalc_libraries_infozsystem_info.calc_libraries_infos1!!##  ""**,,  d//G/<<=== S SCse,,A}D&&A&&&&=EFFF SOOFSE22= +01n0E0EA,-******HISQRRR rc |rB|}t|fi||}t|fi|||j|jj<dSr)rrcalc_extra_info saved_resultsrfr5)rurglib_info extra_infos rset_infozsystem_info.set_infosp  ,//11H  ) ) ) ) )--//J  + + + + +6:4>2333rc fd|D}t|dkr||dSt|dkr|dStjtttjjdd|) a Ensure that only one of `options` are found in the section Parameters ---------- *options : list of str a list of options to be found in the section (``self.section``) Returns ------- str : the option that is uniquely found in the section Raises ------ AliasedOptionError : in case more than one of the options are found cPg|]"}jj|#Sr)rn has_optionrq)r=optrus rr?z1system_info.get_option_single..)s-JJJ3##DL#66JJJrrTrNz[{}]z, )rqoptions)sumindexr:r8r$rqrE)rurfounds` rget_option_singlezsystem_info.get_option_singles$KJJJ'JJJ u::??5;;t,,- - ZZ1__1:   % -$&& & !3!;!B!BL&-- '8J8J*K*K"C"M"MNN Nrc(|jj|jvSr)rfr5rr|s rhas_infozsystem_info.has_info7s~&$*<<)>???==?? %*+++ $$$ $$T^%<==    #( * *t *  . .1FF000SVVc\\$3$/1AdeeHlbdsds2ddd1 default_dirsrets r get_pathszsystem_info.get_pathsnsSw{{7C((..rz::"  7## R[ ABJ'qzR''HH BB?@@@  "w"*,, 7#AF{{*00#GG3&''' w~~a   "**+d2D,33q66Q;;((++A((++A.A!u~~!%!3!3!3QqrrUU"<===-.qrrU*WWRZ((//Aw}}Q''/ 1 "4//B!#a!4!4B!w}}R00/ # 2Tzw{{4<55;;BJGG  L!!!  A1vvzz"'--"2"2z =AaPPPP|| 1  -chhsmm444 rr^c8||j|Srrrqrur~s rrzsystem_info.get_lib_dirs~~dlC000rr`cN||j|}|dgkrg}|S)Nr]r)rur~rDs rrz system_info.get_runtime_lib_dirss,~~dlC00 B4<<D rr_c8||j|Srrrs rget_include_dirszsystem_info.get_include_dirsrrrbc8||j|Srrrs r get_src_dirszsystem_info.get_src_dirsrrc |j|j|}n,#t$r|sgcYSt |r|gcYS|cYSwxYwdd|dDDS)Ncg|]}||Srr)r=rs rr?z(system_info.get_libs..sEEEa1EEEErc6g|]}|Sr)strip)r=as rr?z(system_info.get_libs..s ???!AGGII???rr)rnrrqrrrm)rur~defaultr2s rget_libszsystem_info.get_libss 7;;t|S11DD     !! !y   NNN   FE??tzz#???EEEEs #A A A  A rct|dr|||jS||dS)Nr)rr])rrrrs rrzsystem_info.get_librariess@ 4 & & *==do=>> >==b)) )rct}g}|jdkr|dtjdkr|d|jr |t gz}n t g|z}tjdkr|dtjdkr|d|S) Nmsvc.ar0.libcygwin.dll.adarwinz.dylib)r compiler_typerprkplatformrcso_ext)ruc static_extsextss rlibrary_extensionszsystem_info.library_extensionss " " ?f $ $   t $ $ $ <7 " "   v & & &  # *&)DD8k)D <8 # # KK ! ! ! <8 # # KK ! ! ! rc|}d}|D]}|||||g}|n |s)tjdd|||S)zIf 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). N libraries %s not found in %srr _check_libsr rgrE)rulib_dirsr2opt_libsrrgexts rrzsystem_info.check_libss&&((  C##HdHseDDD   H5sxx~~    rc|}|||||}|s)tjdd|||S)zIf static or shared libraries are available then return their info dictionary. Checks each library for shared or static. rrr)rurr2rrrgs r check_libs2zsystem_info.check_libs2sc &&(($$??  H5sxx~~    rct|sJtjdkrddg}ndg}|D]X}|D]"}||||z|z}|rn#|r/t |dksJ|dkr|dz }|dkr||z}|cSYdS) Nr0r]r5rrz.dllrF)rrkr combine_pathsr)rulib_dirr5r lib_prefixesrprefixr.s r _find_libzsystem_info._find_libs!!!!! <7 " ";LL!7L  C&  &&w s0BCCE 1vv{{{{(??6MC&== 3,C  urcgg}}|D]P}|D]K}||||}|r0||||vr||nLQ||fSr)rrp) rurr2r found_dirs found_libsr5r found_libs r _find_libszsystem_info._find_libss!#RJ   C#   NN7C>> %%i000j00"))'222E  :%%rclt|s|g}||||\}}t|dkrtt|t|krT||||\}}|||D]} | |vr|| ||d} | SdS)zxFind mandatory and optional libs in expected paths. Missing optional libraries are silently forgotten. rrr^N)r rrr*rp) rurr2rrrropt_found_dirsopt_found_libsrrgs rrzsystem_info._check_libss 8$$ " zH!%4!F!F J z??Q  3z??c$ii#?#?-1__XxQU-V-V *NN   n - - -) / /*,,%%g...!+ZHHDK4rct|S)zjReturn a list of existing paths composed by all combinations of items from the arguments. )r)ruargss rrzsystem_info.combine_paths2sd##rrr^)r`r_)rbr)"r5r6r7r8rrcrqrr3rrKrMrwrprrrrrr.rrrrrrrrrrrrrrrrrrrsKGM!M$4';99990222 >;;;NNN@=== """"""""H555n1111 11111111 F F F**** $35$46    2 & & &*$$$$$rceZdZdZdS)rci}tdptdptd}td}|r+t|fi||r t|fi||jdi|dSdS)Nrrrrr)r.rr)rurgrrs rrzfft_opt_info.calc_info;sW%%O'):):Ohw>O>O x((    * * * * * 1D00K000 DM ! !D ! ! ! F   rNr5r6r7rrrrrr9s#     rrcReZdZdZdZeZddgdgdgddddgd d gd gdgZd Zd Z dS)rrFFTWrfftw3.h SCIPY_FFTW3_HNr/r2includesmacrosrrfftwfftw.hrfftw.h SCIPY_FFTW_HNcH|}|}||jdzd}|||d}|||}|yd}|D]X}t |||dt |dkrt||gd}nY|rt||d  nd}||j di|d Stj d |d zdS)z8Returns True on successful version detection, else False_libsrr2Nrrrrr define_macrosTz %s not foundr/Fr) rrrrqrrrrrrr rg) ru ver_paramr incl_dirsrr2rgrr>s r calc_ver_infozfftw_info.calc_ver_infoUsP$$&&))++ $$T\G%;[II}}S)F"344x..  D  t))!Yz-BCCDD)J/0011A37777DE 1  D (0CDDDDD   DM ! !D ! ! !4 H%6):; < < <5rcJ|jD]}||rdSdSr)ver_infor )rurs rrzfftw_info.calc_infops?  A!!!$$    rN) r5r6r7rqrrQrr"r rrrrrrGsGK%M#9 ){5688"#V, ()44577 8H6rrc4eZdZdZdZeZdddgddgdgdgZd S) rrrrrrrrrNr5r6r7rqrrQrr"rrrrrvsGGK%M#V, ()44577HHHrrc0eZdZdZdZeZddgdgdgdgZdS)rrFFTW3rrrNr$rrrrrsAGK%M#9 ){5688HHHrrc0eZdZdZdZeZddgdgdgdgZdS)rr ARMPL_DIR armpl_lp64_mprrrNr$rrrrrsBGK%M ,-!* 6799:HHHrrc0eZdZdZdZdddgddgdgdgZd S) r rrrdrfftwzdfftw.hzdrfftw.h) SCIPY_DFFTW_HNrNr5r6r7rqrr"rrrr r BGK$g. ):656889HHHrr c0eZdZdZdZdddgddgdgdgZd S) r rrrsrfftwzsfftw.hzsrfftw.h) SCIPY_SFFTW_HNrNr-rrrr r r.rr c0eZdZdZdZdddgddgdgd gZd S) r rrz fftw threads rfftw_threadsrzfftw_threads.hzrfftw_threads.h)SCIPY_FFTW_THREADS_HNrNr-rrrr r sDGK&+^< 02CD<=??@HHHrr c0eZdZdZdZdddgddgdgd gZd S) r rrz dfftw threadsdrfftw_threadsrzdfftw_threads.hzdrfftw_threads.h)SCIPY_DFFTW_THREADS_HNrNr-rrrr r FGK',o> 13EF=>@@AHHHrr c0eZdZdZdZdddgddgdgd gZd S) r rrz sfftw threadssrfftw_threadsrzsfftw_threads.hzsrfftw_threads.h)SCIPY_SFFTW_THREADS_HNrNr-rrrr r r8rr c&eZdZdZdZeZdZdZdS)rrDJBFFTct|||}g}|D]0}|||dg|gz1d|DS)NrcPg|]#}tj|!|$Srr^r<s rr?z)djbfft_info.get_paths..+444a27==#3#34444rrrr*rrurqr~pre_dirsrr>s rrzdjbfft_info.get_pathssq((w<< A AA KK**1xj99QC? @ @ @ @4444444rc|}|}d}|D]L}||dg}|rd|i}n,||ddtzg}|r dg|gd}nM|dS|D]O}t ||ddgd kr$t ||gd g |jd i|dSPdS) Nzdjbfft.a extra_objectsz libdjbfft.a libdjbfftrrzfftc8.hz fftfreq.hr)SCIPY_DJBFFT_HN)r_rr)rrrrrrr)rurrrgr>r.s rrzdjbfft_info.calc_infos>$$&&))++   A""1zl33A '+""1}kF6J&KLLA &.Z!EE  < F  A4%%a)[)ABBCCqHHDs+C*DFFFF %%%%% I rN) r5r6r7rqrrSrrrrrrrrsAGK'M555rrc.eZdZdZdZdgZdZdZdZdS)rrMKLROOTmkl_rtc 8tjdd}||Stjddtj}d}tj|rXt|5}|D]-}|}|r| |. dddn #1swxYwYg}|D]}|tj }|D]k} | drTtj |d| | dz}| |nl|D]}ttj |dd} | ttj |dz } | D]E} tjtj | d r| ccSFdS) NrILD_LIBRARY_PATHr]z/etc/ld.so.confrr*zmkl*r5)r:rrrmrirDroopenrrpr;rrErrr_) rumklrootr+ ld_so_confrur>intel_mkl_dirsrD path_atomsmrsub_dirs rget_mkl_rootdirzmkl_info.get_mkl_rootdirs=*..D11  N 0"55;;BJGG& 7>>* % % (j!! (Q((A A( Q( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (   DBF++J  <<&& J/G 0@0@0C0Ca0G/G$HIIA"))!,,,E # #A Qs3344D Da0011 1D # #7==gu!=!=>>#"NNNNN# #ts1CCCc|}|t|dSddlm}|rd}n-|r|rd}nd}t|tj |d|gtj |dgdS) Nr)cpur(intel6432r5r4rKrM) rUrrwcpuinforW is_Itaniumis_Intelis_64bitr:rDrE)rurOrWplts rrwzmkl_info.__init__ s&&(( ?   & & & & & $ $ $ $ $ $~~  CLLNN   "$',,ws"C"C!D&(gll7I&F&F%G ! I I I I Irct|}|}|dd}|||j}|||}|dSt |ddg|tjdkrnt |dg|j d i|dS) Nmkl_libsr SCIPY_MKL_HN HAVE_CBLASNrr_r0pthreadr r) rrrr_lib_mklrrrkrr)rurrrrargs rrzmkl_info.calc_infos$$&&))++ $$Z====dm44(33 < FD#8#7#9!* , , , , <7 " "   4 4 4 4 rN) r5r6r7rqrrhrUrwrrrrrrsUGKzH8III"rrceZdZdS)rNr5r6r7rrrrr.DrrceZdZdS)rNrjrrrrr2rkrrc.eZdZdZdZdgZdZdZdZdS)rrSSL2_DIR fjlapackexsvecNtjdd}||SdS)N TCSDS_PATH)r:rrru tcsdsroots rget_tcsds_rootdirzssl2_info.get_tcsds_rootdir>s(JNN<66   trc |}|t|dSt|tj|dgtj|dgdS)Nlib64clang-comp/includerZ)rtrrwr:rDrErrs rrwzssl2_info.__init__Ds**,,     & & & & &  "$',,y'"B"B!C&(gll9('*'*&+ ! , , , , ,rc|}|}| tj|d}|}| tj|d}|d|j}|||}|dSt|ddg||j di|dS)Nrvrw ssl2_libsrd) HAVE_SSL2rrfr) rtrr:rDrErr _lib_ssl2rrr)rursrrryrgs rrzssl2_info.calc_infoOs**,, $$&&  w||Iw77H))++   Y0DEEIMM+t~>> )44 < FD#7#3#5!* - - - -  rN) r5r6r7rqrr{rtrwrrrrrr6sSGK !I , , ,rrceZdZdS)rNrjrrrrrfrkrrceZdZdS)rNrjrrrrrjrkrrc"eZdZdZdZdgZdZdS)rrr(r)c|}|}|d|j}|||}|dSt |ddg||jdi|dS)N armpl_libsrbrdrfr)rrr _lib_armplrrr)rurrrrgs rrzarmpl_info.calc_infots$$&&))++ ]]<AA *55 < FD#8#7#9!* , , , ,  rN)r5r6r7rqrrrrrrrros5GK!"J     rrceZdZdS)rNrjrrrrrrkrrceZdZdS)rNrjrrrrrrkrrcneZdZdZdZddgZejdddkrdgZd gZ ndgZd gZ e Z d Z d Z dS) rrATLASf77blascblasNfreebsdatlas_r alapack_rrct|||}g}|D]1}|||gd|gz2d|DS)N)atlas*ATLAS*sse3dnowsse2cPg|]#}tj|!|$Srr^r<s rr?z(atlas_info.get_paths..r@rrArBs rrzatlas_info.get_pathss((w<< I IA KK**1/A/A/ABBEFCH I I I I4444444rcx|}i}|dd}|||j|jz}|d|j}d}d}d}|D]V} || |g}|7| g|| ddgz} || |g}|n|r|}Wtj |j ||}|dS| } ||| zdpdg} | d} | r1tj | } t|| gd |d <|t|fi|t|fi|nd |dvr.t|fi|t|d g |jdi|dSt|fi|t|dg t#jd} t'j| d|jdi|dS|dd}|dd}d}dg}t*jdkr|d|D]T}|D]K}tj |||z|z}tj |r|}nL|rnU|Xtj|d}|dkr3t#jd||dz fz} t'j| dnd|d <t9di|\}}t|fi||jdi|dS)N atlas_libsr lapack_libsrrcblas.hrrrlanguagerATLAS_WITH_LAPACK_ATLASNrATLAS_WITHOUT_LAPACKNa ********************************************************************* Could not find lapack library within the ATLAS installation. ********************************************************************* rrr^r5r0r]i>a ********************************************************************* Lapack library (from ATLAS) is probably incomplete: size of %s is %sk (expected >4000k) Follow the instructions in the KNOWN PROBLEMS section of the file numpy/INSTALL.txt. ********************************************************************* if77r)rrrr _lib_atlas _lib_lapackrrr rgrfrr:rDrrrtextwrapdedentrrrkrrprrEexistsstatget_atlas_version)rurrgrrrrratlas_1r> lib_dirs2r_hmessage lapack_dir lapack_name lapack_librrrfnsz atlas_versionatlas_extra_infos rrzatlas_info.calc_infos'$$&&$$\;??]]3$/(IJJ mmM43CDD   A$$Q B77E C$"4"4Q88L"M"MM )))["EE%E     =E = F,,..   < 7 C C Mv aD  0""A A3 / / / /Z    ' ' ' ' '  & & & & & & u[1 1 1  & & & & & 'H&I K K K K DM ! !D ! ! ! F  & & & & & -K,L M M M Mo'G M'a 0 0 0 0 DM ! !D ! ! ! FN+A. [)!,  w <7 " "    # # #((**  A&  W\\*f{.BQ.FGG7>>"%%!#JE    !$$Q'B[  "/+'T 23 g!44444#(Z *;*D*De*D*D' 'D--,--- r)r5r6r7rqrrrkrrrr<rrrrrrrrsGKW%J |BQB9$$[ "m Y j &M555UUUUUrrceZdZddgZdZdS)rrrc2|}i}|dd}|||j|jz}|||g}|dS|}|||zdpdg}|d}|r1tj |}t||gd|d<dg|d <td i|\}} t|fi| t|fi||j d i|dS) Nrrrrrrrrdrr)rrrrrrrrr:rDrrrr rurrgrrrr_rrrs rrzatlas_blas_info.calc_infosO$$&&$$\;??]]3$/(IJJ   :r:: = F,,..   < 7 C C Mv aD  0""A A3 / / / /Z!5 6_*;*D*De*D*D' 'E..-...D""E""" rNr5r6r7rrrrrrrs-W%JrrceZdZddgZddgZdS)rPTATLASr ptf77blasptcblasNr5r6r7rrrrrrr"g&Ky)JJJrrceZdZddgZddgZdS)rrrrrNrrrrrrrrrc$eZdZdgejzZdS)rrN)r5r6r7rrrrrrrs !J$99JJJrrc$eZdZdgejzZdS)rrN)r5r6r7rrrrrrr s !$6$AAJJJrrceZdZdgZeZeZdS)rsatlasN)r5r6r7rrrrrrrr$sJJKKKrrceZdZdgZdZdS)rrc"|}i}|dd}|||j}|||g}|dS|}|||zdpdg}|d}|r1tj |}t||gd|d<dg|d <td i|\}} t|fi| t|fi||j d i|dS) N atlas_librrrrrrrdrr) rrrrrrrr:rDrrrrrs rrzatlas_3_10_blas_info.calc_info-sH$$&&$$[+>>]]388   :r:: = F,,..   < 7 C C Mv aD  0""A A3 / / / /Z!5 6_*;*D*De*D*D' 'E..-...D""E""" rNrrrrrr*s*Jrrc$eZdZddgZdgZeZeZdS)rrrtatlasN)r5r6r7rrrrrrrrrGs)g&KJJKKKrrceZdZddgZdgZdS)rrrrNrrrrrrNsg&KJJJrrceZdZdS)rNrjrrrrrSrkrrceZdZdS)rNrjrrrrrWrkrrc&eZdZdZdZdgZeZdZdS)rrLAPACKc|}|dd}|||j}|||g}|dSd|d<|jdi|dS)Nrrrrr)rrrrrr)rurrrrgs rrzlapack_info.calc_infoas$$&&$$]K@@mmC99 xb99 < F Z rN) r5r6r7rqrrr@rrrrrrr[s9GKJ'M     rrc&eZdZdZdZeZdZdZdS)rr LAPACK_SRCc t|||}g}|D]1}||g||ddgz2d|DS)Nz LAPACK*/SRCSRCcPg|]#}tj|!|$Srr^r<s rr?z-lapack_src_info.get_paths..zr@rrArBs rrzlapack_src_info.get_pathsust((w<< M MA KKd00]E4JKKK L L L L4444444rc|}d|D]C}tjtj|dr|nDsdSd}d}d}d}d}|dz}|d z} ||z} ||z} ||zd z} ||zd z} d }d }d|| zDd| | zDzd| Dzd| Dzd||z|zDz}fd|D}tjdd|fddDz }|fddDz }|fddDz }|fddDz }d|D}|dd}|jdi|dS)Nr]zdgesv.fzB ilaenv ieeeck lsame lsamen xerbla iparmq a bdsdc bdsqr disna labad lacpy ladiv lae2 laebz laed0 laed1 laed2 laed3 laed4 laed5 laed6 laed7 laed8 laed9 laeda laev2 lagtf lagts lamch lamrg lanst lapy2 lapy3 larnv larrb larre larrf lartg laruv las2 lascl lasd0 lasd1 lasd2 lasd3 lasd4 lasd5 lasd6 lasd7 lasd8 lasd9 lasda lasdq lasdt laset lasq1 lasq2 lasq3 lasq4 lasq5 lasq6 lasr lasrt lassq lasv2 pttrf stebz stedc steqr sterf larra larrc larrd larr larrk larrj larrr laneg laisnan isnan lazq3 lazq4 a gbbrd gbcon gbequ gbrfs gbsv gbsvx gbtf2 gbtrf gbtrs gebak gebal gebd2 gebrd gecon geequ gees geesx geev geevx gegs gegv gehd2 gehrd gelq2 gelqf gels gelsd gelss gelsx gelsy geql2 geqlf geqp3 geqpf geqr2 geqrf gerfs gerq2 gerqf gesc2 gesdd gesv gesvd gesvx getc2 getf2 getrf getri getrs ggbak ggbal gges ggesx ggev ggevx ggglm gghrd gglse ggqrf ggrqf ggsvd ggsvp gtcon gtrfs gtsv gtsvx gttrf gttrs gtts2 hgeqz hsein hseqr labrd lacon laein lags2 lagtm lahqr lahrd laic1 lals0 lalsa lalsd langb lange langt lanhs lansb lansp lansy lantb lantp lantr lapll lapmt laqgb laqge laqp2 laqps laqsb laqsp laqsy lar1v lar2v larf larfb larfg larft larfx largv larrv lartv larz larzb larzt laswp lasyf latbs latdf latps latrd latrs latrz latzm lauu2 lauum pbcon pbequ pbrfs pbstf pbsv pbsvx pbtf2 pbtrf pbtrs pocon poequ porfs posv posvx potf2 potrf potri potrs ppcon ppequ pprfs ppsv ppsvx pptrf pptri pptrs ptcon pteqr ptrfs ptsv ptsvx pttrs ptts2 spcon sprfs spsv spsvx sptrf sptri sptrs stegr stein sycon syrfs sysv sysvx sytf2 sytrf sytri sytrs tbcon tbrfs tbtrs tgevc tgex2 tgexc tgsen tgsja tgsna tgsy2 tgsyl tpcon tprfs tptri tptrs trcon trevc trexc trrfs trsen trsna trsyl trti2 trtri trtrs tzrqf tzrzf lacn2 lahr2 stemr laqr0 laqr1 laqr2 laqr3 laqr4 laqr5 a laexc lag2 lagv2 laln2 lanv2 laqtr lasy2 opgtr opmtr org2l org2r orgbr orghr orgl2 orglq orgql orgqr orgr2 orgrq orgtr orm2l orm2r ormbr ormhr orml2 ormlq ormql ormqr ormr2 ormr3 ormrq ormrz ormtr rscl sbev sbevd sbevx sbgst sbgv sbgvd sbgvx sbtrd spev spevd spevx spgst spgv spgvd spgvx sptrd stev stevd stevr stevx syev syevd syevr syevx sygs2 sygst sygv sygvd sygvx sytd2 sytrd a bdsqr hbev hbevd hbevx hbgst hbgv hbgvd hbgvx hbtrd hecon heev heevd heevr heevx hegs2 hegst hegv hegvd hegvx herfs hesv hesvx hetd2 hetf2 hetrd hetrf hetri hetrs hpcon hpev hpevd hpevx hpgst hpgv hpgvd hpgvx hprfs hpsv hpsvx hptrd hptrf hptri hptrs lacgv lacp2 lacpy lacrm lacrt ladiv laed0 laed7 laed8 laesy laev2 lahef lanhb lanhe lanhp lanht laqhb laqhe laqhp larcm larnv lartg lascl laset lasr lassq pttrf rot spmv spr stedc steqr symv syr ung2l ung2r ungbr unghr ungl2 unglq ungql ungqr ungr2 ungrq ungtr unm2l unm2r unmbr unmhr unml2 unmlq unmql unmqr unmr2 unmr3 unmrq unmrz unmtr upgtr upmtr z econd z secnd z srot srscl z drot drscl z icmax1 scsum1 z izmax1 dzsum1 cg|]}d|zS)zs%s.frr=rus rr?z-lapack_src_info.calc_info..sBBB17Q;BBBrcg|]}d|zS)zd%s.frrs rr?z-lapack_src_info.calc_info..sDDDQWq[DDDrcg|]}d|zS)zc%s.frrs rr?z-lapack_src_info.calc_info..;;;QWq[;;;rcg|]}d|zS)zz%s.frrs rr?z-lapack_src_info.calc_info..rrcg|]}d|zS)z%s.frrs rr?z-lapack_src_info.calc_info..sNNNAVaZNNNrcPg|]"}tj|#SrrCr=rusrc_dirs rr?z-lapack_src_info.calc_info..s)===27<<++===rrUINSTALLcVg|]%}tj|dz&S)zlamch.frC)r=r.src_dir2s rr?z-lapack_src_info.calc_info..s-JJJaBGLL1y=99JJJrsdczcVg|]%}tj|dz&S)zlarfp.frCr=r.rs rr?z-lapack_src_info.calc_info..s-IIIQBGLL!i-88IIIrc\g|](}tjd|zdz)S)ilazlr.frCrs rr?z-lapack_src_info.calc_info..2NNN!BGLL%!)f*<==NNNrc\g|](}tjd|zdz)S)rzlc.frCrs rr?z-lapack_src_info.calc_info..rrcPg|]#}tj|!|$Srr:rDrors rr?z-lapack_src_info.calc_info..+;;;):):;1;;;rrrrrrr:rDrorErmr)rurbr>allauxlauxlasrcsd_lasrccz_lasrcsclauxdzlauxslasrcdlasrcclasrczlasrcoclasrcozlasrcrrgrrs @@rrzlapack_src_info.calc_info|s$$&&  Aw~~bgll1i8899    F    2    ! !!!!N2!N2##BB&(?(?(A(ABBBDD6F?*A*A*C*CDDDE;;6..*:*:;;;<<;6..*:*:;;;<ON&7*:W*D)K)K)M)MNNN O >===W===7<<y99JJJJ6JJJJIIII&IIIINNNNvNNNNNNNNvNNNN<;g;;;"66 rN) r5r6r7rqrrCrrrrrrrrmsHGK*M555fffffrrz /* This file is generated from numpy/distutils/system_info.py */ void ATL_buildinfo(void); int main(void) { ATL_buildinfo(); return 0; } c |dg}|dg}t|t|f}|tvr t|Stt }d}i} |t ||\}}|rtjd|tj ra|t |dgz|\}}|s;tj tj ddt|d d g n#t$r|D]2}tjd |} | r| d }|n3| t"jdd}|r"t|dt'|fgnt|dg|pd|fcYSwxYw|s,tjd|} | r| d }|Ntjd|tj rd}net)jd|t)jd|n:|dkrt|dgn!t|dt'|fg||fx} t|<| S)Nrr^rz!undefined reference to `_gfortrangfortrana ***************************************************** 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. ***************************************************** rrf90)ATLAS_REQUIRES_GFORTRANN)rrz#ATLAS_(?P\d+[.]\d+[.]\d+)_version ATLAS_VERSION ATLAS_INFOr) NO_ATLAS_INFOrz?.?.?z*ATLAS version (?P\d+[.]\d+[.]\d+)zundefined symbol: ATL_buildinfoz3.2.1_pre3.3.6z Status: %dz Output: %s)r)rtuple_cached_atlas_version cmd_configr get_outputatlas_version_c_textresearchMrrrrr Exceptiongroupr:rr&r rg) rrr^r~rrrgr%orSresults rrrs7 ;++I::nb11L   U<00 1C ###$S))<>>""AM D).||0&/l1  O?BDII O<< 4*3zl*B-9 !!DAq O ho /  &' ( ( ( (D5+L*MOOOO ...  A @!DDA 3 ! 2 2 ()  JNN?DAAM  E / >>.@-      -B,C D D D D'----'.* / ICQ G G  /GGI..M 97BD A A &,MM H\1 % % % H\1 % % % % * * *D)>(?@@@@@D +M::*<)     +8*==F "3 ' MsB#D%%BGGcleZdZeZgdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdS)r)rrrrrrrrNPY_LAPACK_ORDERcFtd}|r|jdi|dSdS)NrTFrr.rrurgs r_calc_info_armplz lapack_opt_info._calc_info_armplAs9''   DM ! !D ! ! !4urcFtd}|r|jdi|dSdS)NrTFrrrs r_calc_info_mklzlapack_opt_info._calc_info_mklH9 %%   DM ! !D ! ! !4urcFtd}|r|jdi|dSdS)NrTFrrrs r_calc_info_ssl2zlapack_opt_info._calc_info_ssl2Os9 &&   DM ! !D ! ! !4urctd}|r|jdi|dStd}|r|jdi|dSdS)NrTrFrrrs r_calc_info_openblasz#lapack_opt_info._calc_info_openblasVsm)**   DM ! !D ! ! !4*++   DM ! !D ! ! !4urcFtd}|r|jdi|dSdS)NrTFrrrs r_calc_info_flamez lapack_opt_info._calc_info_flameas9     DM ! !D ! ! !4urc2td}|std}|std}|std}|rR|dg}d|vsd|vr%|}|sdSt|fi||jd i|d SdS) NrrrrrrrFTr)r.r_get_info_lapackrr)rurgrrs r_calc_info_atlasz lapack_opt_info._calc_info_atlashs,-- *L))D -O,,D %G$$D  "--A0A550A55#3355 "! 5D00K000 DM ! !D ! ! !4urcFtd}|r|jdi|dSdSNrTFrrrs r_calc_info_acceleratez%lapack_opt_info._calc_info_acceleraterrctd}|sktjtjpddtd}|s$tjt jpddiSt |d|fg|S)Nrr]rrr fblas_srcr )r.rrrJr8rOrrurginfo_srcs r_get_info_blaszlapack_opt_info._get_info_blass ## C M+39ra H H H H ++H  2:@bQOOOO +x)@(A B B B B rctd}|sktjtjpddtd}|s$tjt jpddiSt |d|fg|S)Nrr]rrr flapack_srcr )r.rrr@r8rCrr"s rrz lapack_opt_info._get_info_lapacks!! E M-5; J J J J --H  4<BqQQQQ -)B(C D D D D rc|}|rB|}t|fi|t|dg|jdi|dSdS)NrrrTFr)rr$rr)rurg info_blass r_calc_info_lapackz!lapack_opt_info._calc_info_lapacks{$$&&  ++--I  * * * * * -A,B C C C C DM ! !D ! ! !4urci}d|d<g|d<g|d<g|d<tjd|d<|jd i|dS) Nrrrr_rNPY_LAPACK_LIBSreTr)r:rrmrrs r_calc_info_from_envvarz&lapack_opt_info._calc_info_from_envvarsk Z[!^ "_"$*->"?"E"E"G"G  trcXt|d|SNz _calc_info_{}rr$rur/s r _calc_infozlapack_opt_info._calc_info(:wt_33D99::<<B1 M M M M M M ( 'rN)r5r6r7r@rr5r6rrrrrrrr$rr*r-r2rrrrrr9s'M555L+   2      ===NNNNNrrceZdZdZdZdZdS)_ilp64_opt_info_mixinNct|dg}|dd}|dd}|jd|fvrdS|jd|fvrdSt |S)NrBLAS_SYMBOL_PREFIXr]BLAS_SYMBOL_SUFFIXF)dictr symbol_prefix symbol_suffixbool)rurgrrsuffixs r _check_infoz!_ilp64_opt_info_mixin._check_infosdhh33440"550"55  dF^ 3 35  dF^ 3 35Dzzr)r5r6r7r>r=rArrrr8r8s-MM     rr8c$eZdZeZddgZdZdZdS)rrrNPY_LAPACK_ILP64_ORDERcrt|dz}||r|jdi|dSdS)N_lapackTFrr.rArrur/rgs rr2z lapack_ilp64_opt_info._calc_infosLy())   D ! !  DM ! !D ! ! !4urN)r5r6r7rErr5r6r2rrrrrs9,M!#34L1rrceZdZdZdZdS)rr]Nr5r6r7r=r>rrrrrsMMMMrrceZdZdZdZdS)rr]64_NrIrrrrrMMMMrrc`eZdZeZgdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdS)r)rrrrrrrrNPY_BLAS_ORDERcFtd}|r|jdi|dSdS)NrTFrrrs rrzblas_opt_info._calc_info_armplrrcFtd}|r|jdi|dSdS)NrTFrrrs rrzblas_opt_info._calc_info_mkl9 ##   DM ! !D ! ! !4urcFtd}|r|jdi|dSdS)NrTFrrrs rrzblas_opt_info._calc_info_ssl2s9 $$   DM ! !D ! ! !4urcFtd}|r|jdi|dSdS)NrTFrrrs r_calc_info_bliszblas_opt_info._calc_info_bliss9   DM ! !D ! ! !4urcFtd}|r|jdi|dSdS)NrTFrrrs rrz!blas_opt_info._calc_info_openblasrQrctd}|std}|std}|std}|r|jdi|dSdS)NrrrrTFrrrs rrzblas_opt_info._calc_info_atlas#s{122 /-..D 2011D *L))D   DM ! !D ! ! !4urcFtd}|r|jdi|dSdSrrrs rrz#blas_opt_info._calc_info_accelerate0rrctjtjpddi}t |dgt d}|rt |fi|nktjt jpddt d}|s$tjtjpdddSt |d |fg |jd i|d S) Nr]rrr(rrrFr!r Tr) rrrHr8rr.rJrOr)rurgrrs r_calc_info_blaszblas_opt_info._calc_info_blas7s *28bQGGGGD)=(>????  C  % % % % % % M+39ra H H H H ++H  2:@bQOOOOu +x)@(A B B B B trcfi}d|d<g|d<g|d<g|d<tjd|d<dtjvrX|dd |dtjd|jd i|d S) Nrrrr_r NPY_BLAS_LIBSreNPY_CBLAS_LIBSrdTr)r:rrmrpr*rrs rr-z$blas_opt_info._calc_info_from_envvarMs Z[!^ "_"$*_"="C"C"E"E  rz ) )  ! ( ()= > > > " # * *(* 3C(D(J(J(L(L N N N trcXt|d|Sr/r0r1s rr2zblas_opt_info._calc_info[r3rct|j|j\}}t|dkr"t d|dt jvr|dS|D]}| |rdSd|vrFtj tj pddtj tj pdddSdS)NrzAblas_opt_info user defined BLAS order has unacceptable values: {}r[rr]rr)r blas_orderr6rr)r$r:rr-r2rrrJr8rO)rur_rrs rrzblas_opt_info.calc_info^s$4T_dF]$^$^! M }   ! !`gghuvvww w bj ( (  ' ' ) ) ) F  Dt$$    # # M+39ra H H H H M.6<" K K K K K K $ #rN)r5r6r7rJrr_r6rrrrTrrrrYr-r2rrrrrrs%M111J)   ,   ===LLLLLrrc$eZdZeZddgZdZdZdS)rrrNPY_BLAS_ILP64_ORDERclt|}||r|jdi|dSdS)NTFrrFrGs rr2zblas_ilp64_opt_info._calc_infoysE~~   D ! !  DM ! !D ! ! !4urN)r5r6r7rMrr_r6r2rrrrrts9*M!12J/rrceZdZdZdZdS)rr]NrIrrrrrsMMMMrrceZdZdZdZdS)rr]rKNrIrrrrrrLrrceZdZdZdZgZeZdS) cblas_inforCBLASN)r5r6r7rqrrrJrrrrrfrfs"GKJ%MMMrrfc,eZdZdZdZdgZeZdZdZ dS)rrBLASc*|}|dd}|||j}|||g}|dS||d<t jdkrPd|d<t}|dd}||d}|r||z|d<dg|d <n'| |}|d |d<||d<dg|d <|j d i|dS) N blas_libsrr_Windowsrr cblas_libsrdrrr) rrrrrrrsystemrfget_cblas_libsr) rurrrkrgcblas_info_obj cblas_optrmr5s rrzblas_info.calc_infos@$$&&$$[+>>MM#t77 xB77 < F#'#8#8#:#:D ?   ) ) %D '\\N&88{SSI'00DAAJ ?$.$:[!)=(>_%%%d++C#&Z $'[!)=(>_% rc t}tj}tjd}t j|d} t|d5}| |dddn #1swxYwY | |g|| }n@#tj jtj jf$rYt!j|dSwxYw|ddg|dzdg|dzdgdgfD]} ||t j|d ||d |d g |ct!j|S#tj j$rYwxYw t!j|n#t!j|wxYwdS) a? Check whether we can link with CBLAS interface This method will search through several combinations of libraries to check whether CBLAS is present: 1. Libraries in ``info['libraries']``, as is 2. As 1. but also explicitly adding ``'cblas'`` as a library 3. As 1. but also explicitly adding ``'blas'`` as a library 4. Check only library ``'cblas'`` 5. Check only library ``'blas'`` Parameters ---------- info : dict system information dictionary for compilation and linking Returns ------- libraries : list of str or None a list of libraries that enables the use of CBLAS interface. Returns None if not found or a compilation error occurs. Since 1.17 returns a list. z #include 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; }source.crXN) output_dirr_rrra.outr^rerr^extra_postargs)rtempfilemkdtemprrr:rDrErNwritecompiler distutils ccompiler CompileError LinkErrorshutilrmtreelink_executabler) rurgrtmpdirr%r\ruobjr2s rrozblas_info.get_cblas_libssN6 ! " "!## O  gll6:.. "c3 1                 ii&-1-B-B-D-D FF'4i6I6ST    M& ! ! ! ! !!  k*WI[8I,I D$55y6(L  %%c27<<+H+H04373G59XX>OQS5T5T&VVV KK M& ! ! ! !!*4D  M& ! ! ! !FM& ! ! ! !tsyG'B = G B  GB G+CG%C>&G=C>>(G'AF:GF(%G'F((GGN) r5r6r7rqrrrJrrrorrrrrsHGKJ%Mr]rr|s rr>zopenblas_info.symbol_suffix rrczt}|}|dd}|||j}|||g}|jdkr:|8ddlm}||}|r#|jdkr| ||}d}n |rd }d |d <|dS| } t|fi| |s| |sdSd g|d <|j r|d xxd|j fgz cc<|jr|d xxd|jfgz cc<|S)N openblas_libsrrr) new_fcompiler) c_compilergnu95TFrrrdrr:r;)rrrrrrrnumpy.distutils.fcompilerrcheck_msvc_gfortran_libsrr check_symbolsr=r>) rurrrrrgrruskip_symbol_checkrs rr2zopenblas_info._calc_info s " "$$&&$$_kBB c4?;; x;; ?f $ $ ? ? ? ? ? ? +++A )Q_//44X}MM$(!  # % "D  <4))++ D''J'''! T%7%7%=%= 4!5 6_   R  ! ! !';T=O&P%Q Q ! ! !   R  ! ! !';T=O&P%Q Q ! ! ! rcP|}||jdi|dSdS)Nr)r2rrs rrzopenblas_info.calc_info7 s=     DM ! !D ! ! ! ! !  rcFg}|D]c}|D][}tj||dz}tj|r||n\dSd|jj}tjtjd|}tj|stj ||g|gdd} tj||dz} tj||dz} t| d5} | d|dddn #1swxYwYt| d5} dddn #1swxYwY| S) Nrbuildr)r^rrz .fobjectsz .cobjectsrXr") r:rDrErorprfr5getcwdr_makedirsrNrz) rur^r library_pathslibrary library_dirfullpathrrrg fake_lib_filefake_clib_filerus rrz&openblas_info.check_msvc_gfortran_libs< s     G+   7<< Wt^DD7>>(++!((222Ett >*bikk7H==w}}V$$ K   !'&Z!## VX -CDD fh.DEE - % % . GGDIIm,, - - - . . . . . . . . . . . . . . . .# & & !                 s$8)E--E14E1FFFc~d}t}tj}dfdjD}dfdjD}t jdt||z}tj |d}tj |d} |d } n#t$rg} YnwxYw t|d 5} | |dddn #1swxYwY| |g| } || | |d |d | d}n#tjj$rd}YnwxYwt%j|n#t%j|wxYw|S)NFr"c3@K|]}dj|jdVdS)zvoid ();Nr=r>r= symbol_namerus rrHz.openblas_info.check_symbols..b s`II$/;483E3E3>;373E3E3E GIIIIIIrc3>K|]}j|jdVdS)rNrrs rrHz.openblas_info.check_symbols..f s]DD**.););)4)-);););=DDDDDDrz %(prototypes)s int main(int argc, const char *argv[]) { %(calls)s return 0; }) prototypescallsrsrurerXrtrr^rvT)rrxryrE_require_symbolsrrr<r:rDrrNrzr{rr|r}rrr) rurgrrrrrr%r\r- extra_argsrurs ` rrzopenblas_info.check_symbols\ sh " "!##YYIIII372GIIIII  DDDD.2-BDDDDD O   Je<<<  =gll6:..gll67++ /0JJ   JJJ  "c3 1                ))SEf)55C !!#sd;6G/3N/C1;"===&0     M& ! ! ! !FM& ! ! ! ! sfC!! C0/C04F$D& F$&D**F$-D*.F$ (E32F$3F  F$ F  F$$F:N)r5r6r7rqrrrrJrpropertyr=r>r2rrrrrrrrsGKJ%M X X '''R""" @)))))rrc&eZdZdZdZdgZdgZeZdS)rrrzungqr_N) r5r6r7rqrrrrJrrrrrr s,GKJ!{%MMMrrceZdZddgZdS)rrrN)r5r6r7rrrrrr sh'JJJrrc8eZdZdZdZdgZddgZeZfdZ xZ S)rrOPENBLAS_ILP64 openblas64dgemm_ cblas_dgemmcnt}||dxxdgz cc<|S)Nr)HAVE_BLAS_ILP64Nsuperr2rurgrfs rr2zopenblas_ilp64_info._calc_info sCww!!##    ! ! !&?%@ @ ! ! ! r) r5r6r7rqrrrrMrr2 __classcell__rfs@rrr sYG"KJ -0*Mrrc&eZdZgdZfdZxZS)r)rrrLAPACKE_zungqrcnt}|r|dxxdgz cc<|S)Nr) HAVE_LAPACKENrrs rr2z%openblas_ilp64_lapack_info._calc_info sEww!!##  >  ! ! !&<%= = ! ! ! r)r5r6r7rr2rrs@rrr sDMMMrrc$eZdZdZdZdgZdZdZdS)rr OPENBLAS64_rKr]N)r5r6r7rqrrr>r=rrrrr s)GKJMMMMrrceZdZdS)rNrjrrrrr rkrrc&eZdZdZdZdgZeZdZdS)rrBLISc0|}|dd}|||j}|||g}|dS|}t |ddg||jdi|dS)N blis_libsrrrd)rrr_r)rrrrrrrr)rurrrrgrs rrzblis_info.calc_info s$$&&$$[+>>MM#t77 )R88 < F))++ D #7"8!* , , , ,  rN) r5r6r7rqrrrJrrrrrrr s9GKJ%Mrrc,eZdZdZdZdgZeZdZdZ dS)ra$ Usage of libflame for LAPACK operations This requires libflame to be compiled with lapack wrappers: ./configure --enable-lapack2flame ... Be aware that libflame 5.1.0 has some missing names in the shared library, so if you have problems, try the static flame library. rct}tj}tjd}t j|d}t j|d}|dg} t|d5}| |dddn #1swxYwY| |g|} | | ||d|d |  tj|d S#tjj$rYtj|d SwxYw#tj|wxYw) zS libflame does not necessarily have a wrapper for fortran LAPACK, we need to check z void zungqr_(); int main(int argc, const char *argv[]) { zungqr_(); return 0; }rsrurerXNrrr^rvTF)rrxryrrr:rDrErrNrzr{rrrr|r}r) rurgrrr%r\r-rrurs rcheck_embedded_lapackz flame_info.check_embedded_lapack s " "!## O  gll6:..gll67++XX/44  "c3 1                ))SEf)55C !!#sd;6G/3N/C1;"=== M& ! ! ! ! !&0    M& ! ! ! ! !  M& ! ! ! !sN EB?3 E?CECE#&D E 4E E  EE%c|}|d|j}|||g}|dS|}t |fi|||r|jdi|dStd}|sdS|D]}t||tr#| |g||z||<@t||tr#| |d||z||<~| |d||z||<||r|jdi|dSdS)Nrrrr]) rrrrrrrrr.rsrrr)rur flame_libsrgrrr~s rrzflame_info.calc_info s$$&&]];@@ *b99 < F))++ D''J'''  % %d + + & DM ! !D ! ! ! ! !!,,I ! C Cind33C $b 1 1IcN BDII #66C $b 1 1IcN BDII $b 1 1IcN BDII))$// & %%%%%%% & &rN) r5r6r7r8rqrr>rrrrrrrr sOGJ&M""".% s,>>>SSYY[[&&((>>>rr_PYTHON_HOST_PLATFORMi386intelx86_64rrz0/System/Library/Frameworks/Accelerate.framework/rz-msse3z5-I/System/Library/Frameworks/vecLib.framework/Headersz-Wl,-frameworkz-Wl,Acceleratez,/System/Library/Frameworks/vecLib.framework/rz -Wl,vecLib)rrrd)rdrer) r:rrrrrkrgetenvr rDrr*r)rurr link_argsrs rrzaccelerate_info.calc_info sJNN<00  D" II k4?CCI>>I>>> LH $ $I5t<< %DI~~bcc"f,,<>>0I0I<>>))*,,,, 788 C I--,KK +++ KMNNN  "24D!EFFFF'.."677 C)++,KK +++ KMNNN  "2L!ABBB D .7-A-A-CDDD rN)r5r6r7rqrrJrrrrrrr s7G)J%M+++++rrc&eZdZdZdZeZdZdZdS)rrBLAS_SRCct|||}g}|D]0}||g||dgz1d|DS)NrcPg|]#}tj|!|$Srr^r<s rr?z+blas_src_info.get_paths..X r@rrArBs rrzblas_src_info.get_pathsS so((w<< ? ?A KKd00VH=== > > > >4444444rc\|}d|D]C}tjtj|dr|nDsdSd}d}d}fd||z|zD}d|D}|dd }|jd i|dS) Nr]zdaxpy.fao 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 a 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 z 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 cVg|]%}tj|dz&S)z.frCrs rr?z+blas_src_info.calc_info..z s====7<<T22===rcPg|]#}tj|!|$Srrrs rr?z+blas_src_info.calc_info..} rrrrrr) rurbr>blas1blas2blas3rrgrs @rrzblas_src_info.calc_infoZ s$$&&  Aw~~bgll1i8899    F    ===="U]U299;;===<;g;;;"66 rN) r5r6r7rqrrOrrrrrrrrK sCGK(M555%%%%%rrc(eZdZdZeZdgZdZdZdS)rrX11cTt|ttdS)NrZ)rrwdefault_x11_lib_dirsdefault_x11_include_dirsr|s rrwzx11_info.__init__ s6T.B2J  L L L L LrctjdvrdS|}|}|dd}|||j}|||g}|dSd}|D]}||dr|}n|t||g|j di|dS)N)r0x11_libsrzX11/X.hrr) rkrrrrrrrrrr)rurr_rrrginc_dirr>s rrzx11_info.calc_info s s rrwz_numpy_info.__init__ s  00FF--bf55 $ $5==E d#### ##$BGFM$B$B$D$DEEEE!        29 = = > > > >    D (33 K((( )-88 | + +    - - -% ' 'A Q 0 0 = =>>A $$##A&&&T.02>  @ @ @ @ @s6AC+B C BCB*C CCc2 t|j}n#t$rYdSwxYwi}g}dD]\}t||d}||jdzt |f|jdfg}t |||}d}|D]?}||tj |jdr|}n@|t ||g|r |j di|dS)N) __version__r_VERSIONrz arrayobject.hrr) rrrrupperr&rrrr:rDrEr) rurrgrrvrsr_rr>s rrz_numpy_info.calc_info sw 00FF    FF +  A&!T**C{,,..;',,.,,..57F D////,,..   A!!!"$',,t/>#@#@AA      G9 5 5 5 5  " DM ! !D ! ! !s  %%N) r5r6r7rqrrUrrwrrrrrr sEGJ(M@@@BrrceZdZdZdZdS)rrNr5r6r7rqrrrrrr sGJJJrrceZdZdZdZdS)rrNrrrrrr sGJJJrrceZdZdZdZdS)rrNrrrrrr sGJJJrrceZdZdZdZdS)rrc(d}tjdrtjddf}|dd} ddl}d}n#t$r}t |} ddl}d}n#t$r}t |} ddl}d}nb#t$rU}t |}tj|tj|tj|Yd}~nd}~wwxYwYd}~nd}~wwxYwYd}~nd}~wwxYw|d |df}|dd vr"td |dd |dd |dtj d<|j d it|ddS)N)NNNUMERIXzenvironment varr)r defaulted)rr)rrr)rrrzcnumerix selector must be either 'Numeric' or 'numarray' or 'numpy' but the value obtained from the z was 'z'.r)r:rrrrlrrr rgrr{r)rrr.) ruwhichrrmsg1rmsg2rmsg3s rrznumerix_info.calc_info s 9Y   <Ii((*;;E 8 (E ' , ' ' '1vv '"NNN2EE" ' ' 'q66D'' 7&'''"1vv ' '  'a  &&((%(2 8; ; ;*9>q5888MNN N!&a 9 ++q**+++++sj? C: C5A C5 C-*C(:BC( C  A CC(C  C(#C5(C--C55C:N)r5r6r7rqrrrrrr s(G,,,,,rrceZdZdZdS)rc* ddlm}n#t$rYdSwxYwtjtj|jd}|tj|dg|gdS)Nrr\zfortranobject.crr_) numpy.f2pyrrr:rDrErrir)rurf2py_dirs rrzf2py_info.calc_info s  % % % % % % %    FF 7<< > >FF rw||H6GHHI$,:  / / /s  Nr rrrrr s#rrc"eZdZdZdZdZdZdS)r rBOOSTct|||}g}|D]0}||g||dgz1d|DS)Nzboost*cPg|]#}tj|!|$Srr^r<s rr?z/boost_python_info.get_paths... r@rrArBs rrzboost_python_info.get_paths) sq((w<< A AA KKd00XJ??? @ @ @ @4444444rc |}d}|D]F}tjtj|ddddr|}nG|sdSt jdg}t jd}||vr||tj|ddd}ttj|d}|ttj|d dz }d |g|z|d fg|gd }|r |j d i|dS)Nr]r2pythonr\z module.cppr4r*.cpprMboost_python_src)r_rrr_r) rr:rDrorErrrprr) rurbrr> py_incl_dirsrsrcs_dirbpl_srcsrgs rrzboost_python_info.calc_info0 st$$&&  Aw~~bgll1fh+799::    F!*9556  )-88 | + +    - - -7<<5AA Xw7788DhW==>>>118 L0H*2 4 4 !")   " DM ! !D ! ! !rNr5r6r7rqrrrrrrr r % s<GK555rr c"eZdZdZdZdZdZdS)r!rAGG2ct|||}g}|D]0}||g||dgz1d|DS)Nzagg2*cPg|]#}tj|!|$Srr^r<s rr?z'agg2_info.get_paths..U r@rrArBs rrzagg2_info.get_pathsP sq((w<< @ @A KKd00WI>>> ? ? ? ?4444444rc |}d}|D]D}tjtj|ddr|}nE|sdSt jdkr1ttj|dddd}nUttj|dd}|tj|dddd gz }d |tj|d gd fgtj|d gd }|r |jdi|dS)Nr]r\zagg_affine_matrix.cppr0rzagg_win32_bmp.cpprrzagg_platform_support.cppagg2_srcr4r rr) rr:rDrorErkrrr)rurbrr> agg2_srcsrgs rrzagg2_info.calc_infoW s}$$&&  Aw~~bgll1e5LMMNN    F <7 " "RW\\'5**13FHHIIIIRW\\'5'BBCCI "',,wz','ACCD DI '$&GLL)$D$D#E "$gy!A!A B   " DM ! !D ! ! !rNrrrrr!r!L s<GK555rr!c@eZdZdZdZdZdZdZdZdZ dZ dZ dZ d Z dS) _pkg_config_infoN PKG_CONFIGz pkg-configr]z --modversionz--cflagscd|jtjvrtj|jS|jSr)config_env_varr:rdefault_config_exer|s rget_config_exez_pkg_config_info.get_config_exe s+  "* , ,:d12 2&&rc|dz|jzdz|z} tj|}t|}|S#ttjf$rYdSwxYw)N )append_config_exe subprocess check_outputr OSErrorCalledProcessError)ru config_exeoptioncmdr s rget_config_outputz"_pkg_config_info.get_config_output ss3!77#=F ',,A022AH 67    DD s:AAct|}|s"tjd|d|jddSi}g}g}g}g}g}g}|||j} | r||jj dd t| f|j r6||j d| ddzzdf|jrN||d} | r6||jd| ddzzdf||d } | r| D]o} | dd d kr|| d d.| dd d kr|| d dZ|| p|||j} | r| D]} | dd d kr|| d d.| dd dkr\d| vr8| d d d\} }|| |fx|| d ddf|| |rt#|||rt#|||rt#|||rt#|||rt#|||rt#|||r |jdi|dS)NzFile not found: z. Cannot determine z info.r3rz_%s_z --releasez--libsrz-lz-L-Iz-Drrr rr)re)rdr)r r(r rrqr3 version_flagrprfr5rmrr&version_macro_namer#release_macro_name cflags_flagrr)rur0rgrrr^r_rerdrreleaseoptsrnrs rrz_pkg_config_info.calc_info s$T%8%8%:%:;;   HHZZ/ 0 0 0 F   ((T5FGG  E MM4>288==bAGGII,W557 8 8 8& E t6")//#s";";:= =>BDEEE  " E,,ZEEG E t6")//#s";";:= =>BDEEE%%j(;;  0zz|| 0 0rr7d??$$SW----!W__ ''ABB0000#**3////%%j$2BCC  3zz|| 3 3rr7d?? ''ABB0000!W__czz"122w}}S111 q!f---- s122wo6666&--c2222  4 F 3 3 3 3  3  2 2 2 2  9 < 8 8 8 8  9 < 8 8 8 8  ? o > > > >  E 1C D D D D  " DM ! !D ! ! !r)r5r6r7rqr&r'r+r8r9r7r:r(r3rrrrr#r#v smG!N%!LK''' =====rr#c.eZdZdZdZdZdZdZdZdZ dZ d S) r"r WX_CONFIGz wx-configr] WX_VERSION WX_RELEASEz --versionz --cxxflagsN) r5r6r7rqr&r'r+r8r9r7r:rrrr"r" s:G N$%%LKKKrr"ceZdZdZdZdZdS)r#rrGDK_PIXBUF_XLIB_VERSIONNr5r6r7rqr+r8rrrr#r# s!!G-2rr#ceZdZdZdZdZdS)r$rrGDK_PIXBUF_VERSIONNrDrrrr$r$ s!G(-rr$ceZdZdZdZdZdS)r'rrGDK_X11_VERSIONNrDrrrr'r' s!G%*rr'ceZdZdZdZdZdS)r&rr GDK_VERSIONNrDrrrr&r& s!G!&rr&ceZdZdZdZdZdS)r%rrJNrDrrrr%r% !G&rr%ceZdZdZdZdZdS)r(rrGTK_X11_VERSIONNrDrrrr(r( s!G&*rr(ceZdZdZdZdZdS)r)rr GTK_VERSIONNrDrrrr)r) s!G"&rr)ceZdZdZdZdZdS)r*r XFT_VERSIONNrDrrrr*r* rLrr*ceZdZdZdZdZdS)r+rFREETYPE2_VERSIONNrDrrrr+r+ s!G#,rr+c"eZdZdZdZdgZdZdS)r-rAMDc|}|dd}|||j}|||g}|dS|}d}|D]A}||d}|r'tj |d}nB|t||gdgd|zg|j di|dS) Namd_libsrzamd.hr) SCIPY_AMD_HNr6r_r swig_optsr) rrrrrrrr:rDrrr) rurrrXrgr_rr>r.s rrzamd_info.calc_info s$$&&$$Z====do66x266 < F,,..   A""1g..A '//!A$//    G9'<&=#''>"2 4 4 4 4  rN)r5r6r7rqrrrrrrr-r- s4GKJrr-c&eZdZdZdZeZdgZdZdS)r,rUMFPACKc|}|dd}|||j}|||g}|dS|}d}|D]D}||ddgd}|r'tj |d}nE|t||gdgd|zg t|fitd |j d i|dS) N umfpack_libsrr]rz umfpack.hr)SCIPY_UMFPACK_HNr6rZrr) rrrrrrrr:rDrrr.r) rurrr_rgr_rr>r.s rrzumfpack_info.calc_info5 s5$$&&$$^[AA}}S$/:: xr:: < F,,..   A""1r9o{CCA '//!A$//    G9'@&A#''>"2 4 4 4 4 D,,HUOO,,, rN) r5r6r7rqrrYrrrrrrr,r,/ s9GK(MJrr,c vg}|D],}|st|r|g}||-|}|sgSt|dkr,tdt t |dg}nt|dkrYg}|dD]M}|dD]B}|t tj ||CNn.tt|d|d|ddz}tj dd ||S)zc Return a list of existing paths composed by all combinations of items from arguments. rc ||zSrr)rrs rzcombine_paths..` s QUrrrNz (paths: %s)r) rrprrmaprr*r:rDrErr r)rkwsrrr a0a1s rrrQ sN A    Q<< A  D   4yyA~~**Cd1g,>,>CC Taq' : :B1g : : d27<<B#7#7889999 : :tAwQ!@!@48!KMImSXXf--... Mrrrr)rc++rrrrirr)rrrrc Bg}|D]Z\}dkr||!vr0dvrfd|D9|U|<[|r)tt d|D}|d<dS)Nr)r^r_rdrer`rcZg|]'}|v |(Sr)rp)r=vvr>rs rr?zdict_append..y s0???R!A$1RrcDg|]}t|dSr) language_mapr)r=rs rr?zdict_append.. s(!L!L!LQ,"2"21a"8"8!L!L!Lr)rrpr*inv_language_mapmax)r>re languagesrrrs` @rrro sI  1 ??   Q     66>>>@????1?????! AAaDD S!L!L)!L!L!LMM N*  Frrcddl}|d}|dddddd ||d d \}}||fS) Nrzusage: %prog [-v] [info objs]z-vz --verbose store_trueverboseFz"be verbose and print more messages)actiondestrhelpr)r)optparse OptionParser add_option parse_args)rlrxparserr<rs r parseCmdLiner} s{OOO  " "#B C CF dK 9#?AAA""QRR"11JD$ :rcddl}| tj}t|\}}|jrt jt jnt jt jg}|D]*}|dddkr|dz}| |+| }t }| D]|\}} | | st| tr | tur:|s||vrA|||=| } d| _| }|r*t jdd|dSdS)Nr_inforzInfo classes not defined: %sr)inspectrkrlr}rtr set_thresholdDEBUGrrpglobalsrrisclass issubclassrr verbosityr.rgrE) rlrr<r show_onlyr=show_all_gdict_r/rconfs rrr sNNN |xd##JD$ |$ #)$$$$ #(###I  RSS6W  G A}HiinnG==??  aq!!  ![)) Q+-=-=  19$$)//$//0qss F /)1D1DEEEEEFFr__main__r)r)r8rkr:rrrr,rr functoolsr configparserrrrmdistutils.errorsrdistutils.distrrnumpy.distutilsr distutils.utilr numpy.distutils.exec_commandr r numpy.distutils.misc_utilr rrnumpy.distutils.command.configrrrrrdistutils.ccompilerr|rxr__all__r_bits architecture platform_bitsrr&r/rDrEget_config_varrKrjrMrkrrrNrLrOrrPr vcpkg_dir specifiervcpkg_installed vcpkg_rootrT conda_dirrglobbed_x11_dirrm x11_so_dirr*rNdevnullrPopenPIPEr.rl communicatedecodertriplet returncoder.rinsertrprrxrr.r3r:r<r>r@rCrErHrJrMrOrQrSrUrWrYrrrrrrr r r r r rrrrrrrrrrrrrrrrrrrrrrrrrrrrr8rrrrrrrrfrrrrrrrrrrrrrrrrrrrr r!r#r"r#r$r'r&r%r(r)r*r+r-r,rrnrorr}rr5rrrrshhR &&&&&&888888 ,+++++''''''''''''AAAAAAAAAA??????IIIIII(((((( /r""+h+--a01 $$$N<7 %=Y%=m%L%L%+--.u!M IDC]CCCM;;;;;I B B B FL ! !E (GOOE** 8 " "1 % 0 0III',,y+>> GLL)j*@ A A GLL)6G*G H H  ( (J OJ ' ' ' ' FL ! !E <GOOE**  Yi@@AAA Y ::;;; x!>!>!>?LNN888 FEE#8%1%1%12?AA 46HI w~~n%%B$566  Bq'9::1=J ' '^(D E E E $ + +-C-?-A B B B bj#   I# I  %);!>G|q  $k7)K)K(LL$ RW\\+w%G%G$HH (    D  I I I I I I I I I I I I I I I 7<< E""*:::Arw||CJ>>??? SZ C CDDDBGLLU;;<<<GG!1GGGOO%9OOOOO%9OOOGG!1GGG ! ! # #   FQ&Q&Q&h[*[*[*[*|<<<<    3 * &&&&&&&&ccccc cccLLLLLLILLL\&&&&&=&&&(((((0(((     -   !4*     8:J    .M&M&M&M&M&M&M&M&`00000k000d44444K444n{;D4q155 u599   *FFFFB z HJJJJJs75O7N'BO'N1.O0N11OOO