o ïí‰c4¬ã @sb 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*dddœZ+e+e* ,¡dZ-da.dd„Z"dd„Z/dd„Z0ej*dkr8dej1 2e 3d¡d¡ga4gZ5ga6dgZ7gZ8gZ9dd gZ:d!gZ;d"d#„e:DƒZ:d$d#„e;DƒZ;d%d&„Ze>rej1 ?e>¡Z@e* ,¡dd(kród)ZAnd*ZAej1 2e@d+¡ZBej1 2eBeAd,¡ej1 2eBeAd-¡fD]ZCeZPWn eQefyšYn'weReP S¡d T¡ U¡ƒZVePjWdkrÁe8ej1 2d?eV¡g7Z8t4ej1 2d?eV¡g7a4Wdƒn 1sÌwYej1 2ejXd!¡t4vrþt4 Ydej1 2ejXd!¡¡t6 Zej1 2ejXd¡¡e7 Zej1 2ejXd@¡¡dAd#„t4Dƒa4dBd#„e5DƒZ5dCd#„t6Dƒa6dDd#„e7DƒZ7eƒZ[dEdF„Z\dGdH„Z]ddIdJ„Z^GdKdL„dLeƒZ_GdMdN„dNeƒZ`GdOdP„dPe_ƒZaGdQdR„dRe_ƒZbGdSdT„dTe_ƒZcGdUdV„dVecƒZdGdWdX„dXe_ƒZeGdYdZ„dZe_ƒZfGd[d\„d\e_ƒZgGd]d^„d^e_ƒZhGd_d`„d`egƒZiGdadb„dbe_ƒZjGdcdd„dde_ƒZkGdedf„dfe_ƒZlGdgdh„dhe_ƒZmGdidj„dje_ƒZnGdkd„dƒZoGdldm„dmeoƒZpGdndo„doeoƒZqGdpdq„dqeqƒZrGdrds„dseqƒZsGdtdu„dueqƒZtGdvdw„dweqƒZuGdxdy„dyeqƒZvGdzd{„d{eqƒZwGd|d}„d}eqƒZxGd~d„deoƒZyGd€d„deoƒZzGd‚dƒ„dƒezƒZ{Gd„d…„d…ezƒZ|Gd†d‡„d‡eoƒZ}Gdˆd‰„d‰e}ƒZ~GdŠd‹„d‹e}ƒZGdŒd„de~ƒZ€GdŽd„de}ƒZGdd‘„d‘eƒZ‚Gd’d“„d“e}ƒZƒGd”d•„d•eƒƒZ„Gd–d—„d—eƒƒZ…Gd˜d™„d™e„ƒZ†Gdšd›„d›eƒƒZ‡Gdœd„de…ƒZˆGdždŸ„dŸeoƒZ‰Gd d¡„d¡eoƒZŠd¢Z‹iZŒd£d¤„ZGd¥d¦„d¦eoƒZŽGd§d¨„d¨ƒZGd©dª„dªeŽeƒZGd«d¬„d¬eƒZ‘Gd­d®„d®eƒZ’Gd¯d°„d°eoƒZ“Gd±d²„d²e“eƒZ”Gd³d´„d´e”ƒZ•Gdµd¶„d¶e”ƒZ–Gd·d¸„d¸eoƒZ—Gd¹dº„dºeoƒZ˜Gd»d¼„d¼e˜ƒZ™Gd½d¾„d¾e™ƒZšGd¿dÀ„dÀešƒZ›GdÁd„dÂe™ƒZœGdÃdÄ„dÄeœƒZGdÅdÆ„dÆeœƒZžGdÇdÈ„dÈeežƒZŸGdÉdÊ„dÊe˜ƒZ GdËdÌ„dÌeoƒZ¡GdÍd΄dÎeoƒZ¢GdÏdЄdÐeoƒZ£GdÑdÒ„dÒeoƒZ¤GdÓdÔ„dÔeoƒZ¥GdÕdÖ„dÖe¥ƒZ¦Gd×dØ„dØe¥ƒZ§GdÙdÚ„dÚe¥ƒZ¨GdÛdÜ„dÜeoƒZ©GdÝdÞ„dÞeoƒZªGdßdà„dàeoƒZ«Gdádâ„dâeoƒZ¬Gdãdä„däeoƒZ­Gdådæ„dæe­ƒZ®Gdçdè„dèe­ƒZ¯Gdédê„dêe­ƒZ°Gdëdì„dìe­ƒZ±Gdídî„dîe­ƒZ²Gdïdð„dðe­ƒZ³Gdñdò„dòe­ƒZ´Gdódô„dôe­ƒZµGdõdö„döe­ƒZ¶Gd÷dø„døe­ƒZ·Gdùdú„dúeoƒZ¸Gdûdü„düeoƒZ¹dýdþ„ZºddÿdddœZ»dddddœZ¼dd „Z½dd d „Z¾d d d„Z¿eÀdkr/e¿ƒdSdS(aZ 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_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_opt_info:ALL # usage recommended lapack_src_info:lapack_src mkl_info:mkl 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_executableÚfilepath_from_subprocess_output)Ú is_sequenceÚ is_stringÚget_shared_lib_extension)Úconfig)Úcustomized_ccompiler)Ú _shell_utilsÚ system_infoé é@)Ú32bitÚ64bitcCststƒatS©N)Úglobal_compilerÚ_customized_ccompiler©rrú=/usr/lib/python3/dist-packages/numpy/distutils/system_info.pyrÕsrcCs.| dd¡}| dd¡}| dd¡}d |¡S)zS Convert a python string into a literal suitable for inclusion into C code ú\z\\ú"z\"Ú z\nz"{}")ÚreplaceÚformat)ÚsrrrÚ_c_string_literalÜs    r"cCs@|dvrtdƒ‚|dkr|Sg}|D] }| |d|g¡q|S)aèReturn 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 onlyrÚ64)Ú ValueErrorÚextend)ÚpathsÚbitsÚoutÚprrrÚlibpathsçsr*Úwin32zC:\Ú exec_prefixÚlibsÚ.Úincludezinclude/suitesparseÚlibcCóg|] }| dtj¡‘qS©ú/©rÚosÚsep©Ú.0ÚdrrrÚ ór:cCr1r2r4r7rrrr: r;cs@tj ˆ¡‰t ‡fdd„tDƒ¡t ‡fdd„tDƒ¡dS)z5Add a package manager root to the include directoriesc3ó|] }tj ˆ|¡VqdSr©r5ÚpathÚjoinr7©Ú library_rootrrÚ (ó€ ÿz"add_system_root..c3r<rr=r7r@rrrB*rCN)r5r>ÚnormpathÚdefault_lib_dirsr%Ú _lib_dirsÚdefault_include_dirsÚ _include_dirsr@rr@rÚadd_system_root!s ÿ ÿrIÚvcpkgrÚx86Úx64Ú installedz-windowsz-windows-staticÚcondaú..ÚLibrary)z/usr/local/libz/opt/libú/usr/libz/opt/local/libz/sw/lib)z/usr/local/includez /opt/includez /usr/includez/opt/local/include/ufsparsez/opt/local/includez /sw/includez/usr/include/suitesparse)r.z/usr/local/srcz/opt/srcz/sw/src)z/usr/X11R6/libz /usr/X11/librQz/usr/X11R6/includez/usr/X11/include/usr/includez /usr/lib/X11z/usr/lib/*/libX11.soz/usr/lib/X11/includez/usr/include/X11ÚwÚgccz-print-multiarch)ÚstdoutÚstderrz /usr/lib/ÚsrccCóg|] }tj |¡r|‘qSr©r5r>Úisdir©r8Ú_mrrrr:sócCrWrrXrZrrrr:tr\cCrWrrXrZrrrr:ur\cCrWrrXrZrrrr:vr\cCsÌg}zt}Wntytjd}Ynwtj tj tj |¡¡d|¡}tj  |¡r1|  |¡ztj  d¡}Wn t yBYnwtj ||¡}tj  |¡rU|  |¡tj  |¡rd|  tj |¡¡|S)z¸Returns 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__Ú NameErrorÚsysÚargvr5r>r?ÚsplitÚabspathÚisfileÚappendÚ expanduserÚKeyError)ÚfnameÚ filenamesÚfÚsysfileÚ user_filerrrÚget_standard_file{s, ÿÿ   ÿ   rmc CsDtj |d¡}dd„|Dƒ}|dur|gfS| d¡p| d¡}t|ƒ}| d¡| d¡}|rE|dkr>td|›d|›ƒ‚|dd…}n|d krStd|›d |›ƒ‚| ¡ d ¡}g}|r|  ¡}|D]} | siqd| |vrs|  | ¡qd| |vr||  | ¡qd||fSg}|D]} | sŠq…| |vr”|  | ¡q…| |vr|  | ¡q…||fS) aE 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 invidual 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` NcSóg|]}| ¡‘qSr)Úlower)r8Úorderrrrr:¼óz$_parse_env_order..ú^ú!ézEnvironment variable 'z1' may only contain a single (prefixed) negation: rz,' may not mix negated an non-negated items: ú,) r5ÚenvironÚgetÚ startswithÚlistÚcountr$rorbÚcopyreÚremove) Ú base_orderÚenvÚ order_strÚnegÚ order_str_lÚsum_negÚordersÚ unknown_orderÚ allow_orderrprrrÚ_parse_env_orderŸsL  €ó  €r†cCsÒidt“dt“dt“dt“dt“dt“dt“dt“d t“d t “d t “d t “d t “dt “dt“dt“dt“idt“dt“dt“dt“dt“dt“dt“dt“dt“dt“dt“dt“dt“dt“d t“d!t “d"t!“¥id#t"“d$t#“d%t$“d&t%“d't&“d(t'“d)t(“d*t)“d+t*“d,t*“d-t+“d.t,“d/t-“d0t.“d1t/“d2t0“d3t1“¥id4t2“d5t3“d6t4“d7t5“d8t6“d9t7“d:t8“d;t8“dt:“d?t;“d@t;“dAt<“dBt<“dCt=“dDt=“¥t>t>t?t@tAtBdEœ¥ C| D¡tE¡}|ƒ F|¡S)Fzg notfound_action: 0 - do nothing 1 - display warning message 2 - raise error ÚatlasÚ atlas_threadsÚ atlas_blasÚatlas_blas_threadsÚ lapack_atlasÚlapack_atlas_threadsÚ atlas_3_10Úatlas_3_10_threadsÚatlas_3_10_blasÚatlas_3_10_blas_threadsÚlapack_atlas_3_10Úlapack_atlas_3_10_threadsÚflameÚmklÚopenblasÚopenblas_lapackÚopenblas_clapackÚblisÚ lapack_mklÚblas_mklÚ accelerateÚ openblas64_Úopenblas64__lapackÚopenblas_ilp64Úopenblas_ilp64_lapackÚx11Úfft_optÚfftwÚfftw2Úfftw3ÚdfftwÚsfftwÚ fftw_threadsÚ dfftw_threadsÚ sfftw_threadsÚdjbfftÚblasÚlapackÚ lapack_srcÚblas_srcÚnumpyÚf2pyÚNumericÚnumericÚnumarrayÚnumerixÚ lapack_optÚlapack_ilp64_optÚlapack_ilp64_plain_optÚ lapack64__optÚblas_optÚblas_ilp64_optÚblas_ilp64_plain_optÚ blas64__optÚ boost_pythonÚagg2ÚwxÚgdk_pixbuf_xlib_2úgdk-pixbuf-xlib-2.0Ú gdk_pixbuf_2úgdk-pixbuf-2.0ÚgdkÚgdk_2úgdk-2.0Ú gdk_x11_2ú gdk-x11-2.0Ú gtkp_x11_2ú gtk+-x11-2.0)Úgtkp_2úgtk+-2.0ÚxftÚ freetype2ÚumfpackÚamd)GÚ 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Ú flame_infoÚmkl_infoÚ openblas_infoÚopenblas_lapack_infoÚopenblas_clapack_infoÚ blis_infoÚlapack_mkl_infoÚ blas_mkl_infoÚaccelerate_infoÚopenblas64__infoÚopenblas64__lapack_infoÚopenblas_ilp64_infoÚopenblas_ilp64_lapack_infoÚx11_infoÚ fft_opt_infoÚ fftw_infoÚ fftw2_infoÚ fftw3_infoÚ dfftw_infoÚ sfftw_infoÚfftw_threads_infoÚdfftw_threads_infoÚsfftw_threads_infoÚ djbfft_infoÚ blas_infoÚ lapack_infoÚlapack_src_infoÚ blas_src_infoÚ numpy_infoÚ f2py_infoÚ Numeric_infoÚ numarray_infoÚ numerix_infoÚlapack_opt_infoÚlapack_ilp64_opt_infoÚlapack_ilp64_plain_opt_infoÚlapack64__opt_infoÚ blas_opt_infoÚblas_ilp64_opt_infoÚblas_ilp64_plain_opt_infoÚblas64__opt_infoÚboost_python_infoÚ agg2_infoÚwx_infoÚgdk_pixbuf_xlib_2_infoÚgdk_pixbuf_2_infoÚgdk_infoÚ gdk_2_infoÚgdk_x11_2_infoÚgtkp_x11_2_infoÚ gtkp_2_infoÚxft_infoÚfreetype2_infoÚ umfpack_infoÚamd_inforwrorÚget_info)ÚnameÚnotfound_actionÚclrrrròs"ÿþýüûúùø ÷ ö õ ô óñïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ì5Ë6Ê7É8È9Ç:Æ;Å<Ä=Ã>Â?Á@ÀA¿B¾C½D¼E»Fµ L´ Mrc@óeZdZdZdS)Ú NotFoundErrorz1Some third-party program or library is not found.N©Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrIórc@r)ÚAliasedOptionErrorz‹ Aliases entries in config files should not be existing. In section '{section}' we found multiple appearances of options {options}.Nrrrrrr Mrr c@r)Ú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.Nrrrrrr!Srr!c@r)Ú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]).Nrrrrrr"[rr"c@r)Ú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.Nrrrrrr#brr#c@r)Ú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.Nrrrrrr$jrr$c@r)ÚLapackILP64NotFoundErrorz† 64-bit Lapack libraries not found. Known libraries in numpy/distutils/site.cfg file are: openblas64_, openblas_ilp64 Nrrrrrr%rrr%c@r)Ú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.Nrrrrrr&yrr&c@r)Ú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.Nrrrrrr'€rr'c@r)ÚBlasILP64NotFoundErrorz„ 64-bit Blas libraries not found. Known libraries in numpy/distutils/site.cfg file are: openblas64_, openblas_ilp64 Nrrrrrr(‡rr(c@r)Ú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.Nrrrrrr)Žrr)c@r)Ú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.Nrrrrrr*–rr*c@r)Ú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.Nrrrrrr+žrr+c@r)ÚNumericNotFoundErrorzw Numeric (https://www.numpy.org/) module not found. Get it from above location, install it, and retry setup.py.Nrrrrrr,¦rr,c@r)ÚX11NotFoundErrorzX11 libraries not found.Nrrrrrr-¬rr-c@r)Ú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.Nrrrrrr.°rr.c@sîeZdZdZdZdZdZiZeZ e e fdd„Z dd„Z d d „Zd d „Zd d„Zdd„Zdd„Zd6dd„Zdd„Zd7dd„Zd8dd„Zd9dd„Zd:d!d"„Zd#d$„Zd;d&d'„Zd(d)„Zgfd*d+„Zgfd,d-„Zd.d/„Zd0d1„Zd2d3„Z d4d5„Z!dS).rtTrNz[{}]z, )rDÚoptions)ÚsumÚindexr rr rDr?)rHrbÚfoundrrNrÚget_option_singles   ÿzsystem_info.get_option_singlecCs|jj|jvSr)r9rr\rNrrrÚhas_info.ózsystem_info.has_infocCsJi}dD]}|j |j|¡}tj |¡}|r"||i}t|fi|¤Žq|S)z˜ Updates the information in the current information with respect to these flags: extra_compile_args extra_link_args )r7r8)rArwrDrÚ NativeParserrbrU)rHr:rOraÚtmprrrr[1s €zsystem_info.calc_extra_infocCs2d}| ¡sRd}t |jjd¡t|dƒr| ¡|r?| ¡s?|dkr.tj|j j ddn|dkr9|  |j j ¡‚t t |ƒƒ‚| ¡sMt d¡|  ¡nt d¡|j |jj¡}t ¡tjkr”|r”| ¡D]'\}}t|ƒ}|d vr‡t|ƒd kr‡|d d …d |dd …}t d||¡qgt d¡t |¡S)zv Return a dictionary with items that are compatible with numpy.distutils.setup keyword arguments. rrtú:Ú calc_infoé©Ú stacklevelz NOT AVAILABLEz FOUND:)ÚsourcesrPiNéxz ... ... ...iˆÿÿÿz %s = %sr0)rgrr:r9rÚhasattrrlÚwarningsÚwarnÚ notfounderrorrr$Úreprr_r\rwÚ get_thresholdÚINFOÚitemsr?Úlenr{Údeepcopy)rHrÚflagÚresÚkÚvrrrrAs4       zsystem_info.get_infocCs6|j ||¡ tj¡}|j}|r9t|ƒr9|d}|D] }|tjvr%|}nq|d|ks7t  d|d|f¡|}|rÕ|tjvrÕtj|}|dkrWt  d|j j d|f¡gStj   |¡r¢tj  |¡g|}t|dgƒ}t|ƒdkr¡tj  |¡} tj  | ¡d} | dd …d kr¡t  d |jd| d d…f¡| d d…|jd<n3| tj¡} g} | D]$}tj  |¡rÐ|  |¡d D]} tj  || ¡} tj  | ¡rÏ|  | ¡q»q¬| |}|j |j|¡ tj¡}| |¡g}|D]$}t|ƒdkrtj  |¡stjd |ddqê||vr| |¡qêt d|d |¡¡|S)Néÿÿÿÿrz Setting %s=%sÚNonezDisabled %s: %sz (%s is None)Ú _lib_namesrtér0z#Replacing _lib_names[0]==%r with %r)r/r0zSpecified path %s is invalid.rmrnz ( %s = %s )rk)rArwrbr5r<Ú dir_env_varr rvrr:r9rr>rdÚdirnameÚgetattrrzÚbasenameÚsplitextr‚rYrer?rDr%rsrtÚdebug)rHrDrOrWÚenv_varÚe0Úer9ÚlÚbÚdsÚds2ÚddÚd1Ú default_dirsÚretrrrÚ get_pathsesr þ  ÿÿ    ÿ€     €   €zsystem_info.get_pathsr1cCó| |j|¡Sr©r•rD©rHrOrrrrRœrhzsystem_info.get_lib_dirsr3cCs | |j|¡}|dgkrg}|S)Nr0r—)rHrOr>rrrrSŸs z system_info.get_runtime_lib_dirsr2cCr–rr—r˜rrrÚget_include_dirs¥rhzsystem_info.get_include_dirsr5cCr–rr—r˜rrrÚ get_src_dirs¨rhzsystem_info.get_src_dirscCshz |j |j|¡}Wnty$|sgYSt|ƒr |gYS|YSwdd„dd„| d¡DƒDƒS)NcSsg|]}|r|‘qSrr)r8rŽrrrr:´rqz(system_info.get_libs..cSrnr)Ústrip)r8Úarrrr:´rqru)rArwrDrr rb)rHrOÚdefaultr-rrrÚget_libs«s  ûzsystem_info.get_libsrPcCs&t|dƒr |j||jdS| |d¡S)Nr‚)rr0)rrržr‚r˜rrrrQ¶s  zsystem_info.get_librariescCsztƒ}g}|jdkr| d¡tjdkr| d¡|jr"|tg}ntg|}tjdkr1| d¡tjdkr;| d¡|S) NÚmsvcú.ar+ú.libÚcygwinú.dll.aÚdarwinz.dylib)rÚ compiler_typerer`Úplatformr6Úso_ext)rHÚcÚ static_extsÚextsrrrÚlibrary_extensions¼s          zsystem_info.library_extensionscCsP| ¡}d}|D]}| ||||g¡}|durnq|s&t dd |¡|¡|S)zåIf 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 %sru©r«Ú _check_libsrr:r?)rHÚlib_dirsr-Úopt_libsrªr:ÚextrrrrTÎsÿÿzsystem_info.check_libscCs4| ¡}| ||||¡}|st dd |¡|¡|S)z’If static or shared libraries are available then return their info dictionary. Checks each library for shared or static. r¬rur­)rHr¯r-r°rªr:rrrÚ check_libs2àsÿzsystem_info.check_libs2cCs–t|ƒsJ‚tjdkrddg}ndg}|D]3}|D]}| ||||¡}|r)nq|rHt|ƒdks4J‚|dkr<|d7}|dkrD||}|SqdS) Nr+r0r0rtr£z.dllr¡F)r r`r¦Ú combine_pathsrz)rHÚlib_dirr0rªÚ lib_prefixesr±Úprefixr)rrrÚ _find_libîs&   ÿø zsystem_info._find_libc CsXgg}}|D] }|D]}| |||¡}|r&| |¡||vr$| |¡nq q||fSr)r·re) rHr¯r-rªÚ found_dirsÚ found_libsr0r´Ú found_librrrÚ _find_libss   ü€zsystem_info._find_libsc Cs†t|ƒs|g}| |||¡\}}t|ƒdkrAt|ƒt|ƒkrA| |||¡\}}| |¡|D] } | |vr9| | ¡q.||dœ} | SdS)zxFind mandatory and optional libs in expected paths. Missing optional libraries are silently forgotten. r©rPr1N)r r»rzr%re) rHr¯r-r°rªr¸r¹Úopt_found_dirsÚopt_found_libsr´r:rrrr®s  € zsystem_info._check_libscGst|ŽS)zjReturn a list of existing paths composed by all combinations of items from the arguments. )r³)rHÚargsrrrr³)szsystem_info.combine_paths©r©r1)r3©r2)r5©rP)"rrrrr„r6rDr\rrurErGrJrCrZr_rfrgr[rr•rRrSr™ršržrQr«rTr²r·r»r®r³rrrrr¸s> þ   $ 7       c@óeZdZdd„ZdS)rëcCsdi}tdƒp tdƒp tdƒ}tdƒ}|r0t|fi|¤Ž|r&t|fi|¤Ž|jdi|¤ŽdSdS)Nr¤r£r¥rªr)rrUr_)rHr:rìrôrrrrl2sûzfft_opt_info.calc_infoN©rrrrlrrrrrë0s rëc@sTeZdZdZdZeZddgdgdgdœdddgd d gd gdœgZd d „Zdd„Z dS)rìr¢ÚFFTWr¤úfftw3.h©Ú SCIPY_FFTW3_HN©rr-ÚincludesÚmacrosr£Úrfftwúfftw.húrfftw.h©Ú SCIPY_FFTW_HNc CsÖ| ¡}| ¡}| |jdd¡}| ||d¡}| ||¡}|durRd}|D]}t| ||d¡ƒt|dƒkrDt||gdd}nq'|rPt||d d nd}|dur`|j di|¤Žd St   d |d ¡dS)z8Returns True on successful version detection, else FalseÚ_libsrPr-NrrËrÂrtrÌ©Ú define_macrosTz %s not foundrFr) rRr™rfrDržrTrzr³rUr_rr:) rHÚ ver_paramr¯Ú incl_dirsrar-r:r|r9rrrÚ calc_ver_infoLs.  ÿüzfftw_info.calc_ver_infocCs |jD] }| |¡r dSqdSr)Úver_infor×)rHrYrrrrlgs  ÿÿzfftw_info.calc_infoN) rrrrDr„r*rurØr×rlrrrrrì>s"ýýü rìc@s2eZdZdZdZeZdddgddgdgdœgZd S) rír¢rÆr£rÍrÎrÏrÐrÊN©rrrrDr„r*rurØrrrrríms ýríc@s.eZdZdZdZeZddgdgdgdœgZdS)rîr¤ÚFFTW3rÇrÈrÊNrÙrrrrrîys ýrîc@ó.eZdZdZdZdddgddgdgdœgZd S) rïr¢rÆr¥Údrfftwzdfftw.hzdrfftw.h)Ú SCIPY_DFFTW_HNrÊN©rrrrDr„rØrrrrrï…ó ýrïc@rÛ) rðr¢rÆr¦Úsrfftwzsfftw.hzsrfftw.h)Ú SCIPY_SFFTW_HNrÊNrÞrrrrrðŽrßrðc@ó.eZdZdZdZdddgddgdgd œgZd S) rñr¢rÆz fftw threadsÚ rfftw_threadsr§zfftw_threads.hzrfftw_threads.h)ÚSCIPY_FFTW_THREADS_HNrÊNrÞrrrrrñ—rßrñc@râ) ròr¢rÆz dfftw threadsÚdrfftw_threadsr¨zdfftw_threads.hzdrfftw_threads.h)ÚSCIPY_DFFTW_THREADS_HNrÊNrÞrrrrrò rßròc@râ) rór¢rÆz sfftw threadsÚsrfftw_threadsr©zsfftw_threads.hzsrfftw_threads.h)ÚSCIPY_SFFTW_THREADS_HNrÊNrÞrrrrró©rßróc@ó(eZdZdZdZeZdd„Zdd„ZdS)rôrªÚDJBFFTcCsDt |||¡}g}|D]}| | |dg¡|g¡q dd„|DƒS)NrªcSrWrrXr7rrrr:¼r\z)djbfft_info.get_paths..©rr•r%r³©rHrDrOÚpre_dirsrWr9rrrr•·ó zdjbfft_info.get_pathscCsÀ| ¡}| ¡}d}|D]&}| |dg¡}|rd|i}n| |ddtg¡}|r2dg|gdœ}nq |dur9dS|D]"}t| |ddg¡ƒd kr]t||gd gd |jd i|¤ŽdSq;dS) Nzdjbfft.aÚ extra_objectsz libdjbfft.aÚ libdjbfftrªr¼zfftc8.hz fftfreq.hrm)ÚSCIPY_DJBFFT_HN)r2rÔr)rRr™r³r§rzrUr_)rHr¯rÖr:r9r)rrrrl¾s0þÿüzdjbfft_info.calc_infoN) rrrrDr„r+rur•rlrrrrrô²s  rôc@s2eZdZdZdZdgZdd„Zdd„Zdd „Zd S) rÞr”ÚMKLROOTÚmkl_rtc CsHtj dd¡}|dur |Stj dd¡ tj¡}d}tj |¡rEt|dƒ}|D] }| ¡}|r5|  |¡q(Wdƒn1s@wYg}|D](}| tj ¡}|D]} |   d¡rptj   |d|  | ¡d…¡}|  |¡nqSqI|D]-}ttj  |dd¡ƒ} | ttj  |d ¡ƒ7} | D]} tj tj  | d ¡¡r | SqqtdS) NròÚLD_LIBRARY_PATHr0z/etc/ld.so.confÚrr”rmÚ*zmkl*r0)r5rvrwrbr<r>rdÚopenr›rer6rxr?rdrrY) rHÚmklrootr&Ú ld_so_confrjr9Úintel_mkl_dirsr>Ú path_atomsÚmrWÚsub_dirrrrÚget_mkl_rootdirÛsB   €ýÿ   ý€ ÿÿzmkl_info.get_mkl_rootdircCs€| ¡}|durt |¡dSddlm}| ¡rd}n | ¡r'| ¡r'd}nd}tj|tj   |d|¡gtj   |d¡gddS) Nrt)Úcpur#Úintel64Ú32r0r/©rErG) rþrrJÚcpuinforÿÚ is_ItaniumÚis_IntelÚis_64bitr5r>r?)rHrørÿÚpltrrrrJ÷s  ýzmkl_info.__init__cCs‚| ¡}| ¡}| dd¡}| ||j¡}| ||¡}|dur!dSt|ddg|dtjdkr0nt|dgd|j d i|¤ŽdS) NÚmkl_libsrP)Ú SCIPY_MKL_HN©Ú HAVE_CBLASN)rÔr2r+ÚpthreadrÃr) rRr™rfržÚ_lib_mklr²rUr`r¦r_)rHr¯rÖrarr:rrrrls"  ÿý zmkl_info.calc_infoN) rrrrDr„r rþrJrlrrrrrÞÖs rÞc@ó eZdZdS)rãN©rrrrrrrrãórãc@r)räNrrrrrrärräc@s\eZdZdZdZddgZejdd…dkrdgZd gZ ndgZd gZ e Z d d „Z d d„Z dS)rÑr‡ÚATLASÚf77blasÚcblasNéÚfreebsdÚatlas_rÚ alapack_rr¬cCsFt |||¡}g}|D]}| | |gd¢¡|g¡q dd„|DƒS)N)úatlas*úATLAS*ÚsseÚ3dnowÚsse2cSrWrrXr7rrrr:6r\z(atlas_info.get_paths..rërìrrrr•0sÿzatlas_info.get_pathscCsà| ¡}i}| dd¡}| ||j|j¡}| d|j¡}d}d}d}|D]1} | | dgg¡} | | |g¡}|durR| g| | ddg¡} | | |g¡}|durRn|rV|}q%t  |j ¡|durc|}|duridS|  ¡} | || d¡pwdg} | d} | r‹t j  | ¡} t|| gd d |d <|dur¤t|fi|¤Žt|fi|¤ŽnDd|dvrÃt|fi|¤Žt|d gd |jdi|¤ŽdSt|fi|¤Žt|dgd t d¡}tj|dd|jdi|¤ŽdS|dd}|dd}d}dg}tjdkr| d¡| ¡D]$}|D]}t j  ||||¡}t j  |¡r$|}nq |r+nq|durUt  |¡d}|dkrQt d¡||df}tj|ddnd|d <tdi|¤Ž\}}t|fi|¤Ž|jdi|¤ŽdS)NÚ atlas_libsrPÚ lapack_libsr‹rrúcblas.hrrÂr¨Úlanguage©ÚATLAS_WITH_LAPACK_ATLASNrÓ©ÚATLAS_WITHOUT_LAPACKNa ********************************************************************* Could not find lapack library within the ATLAS installation. ********************************************************************* rmrnr1r0r+r0é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. ********************************************************************* iÚf77r)rRrfržr‚Ú _lib_atlasÚ _lib_lapackr²r³rr:r9r™r5r>r…rUr_ÚtextwrapÚdedentrsrtr`r¦rer«r?ÚexistsÚstatÚget_atlas_version)rHr¯r:rarrr‡r¬Úatlas_1r9r‹Ú lib_dirs2r2ÚhÚmessageÚ lapack_dirÚ lapack_nameÚ lapack_librµrŒr¶ÚfnÚszÚ atlas_versionÚatlas_extra_inforrrrl8s” €   ÿ      þÿ   ø zatlas_info.calc_info)rrrrDr„r‚r`r¦r'r(r!rur•rlrrrrrÑ#s rÑc@seZdZddgZdd„ZdS)rÓrrc Csâ| ¡}i}| dd¡}| ||j|j¡}| ||g¡}|dur#dS| ¡}| ||d¡p1dg}|d}|rEtj   |¡}t ||gdd|d<dg|d <t d i|¤Ž\}} t |fi| ¤Žt |fi|¤Ž|j d i|¤ŽdS) NrrPrrrÂr¨r r rÔr)rRrfržr‚r'r²r™r³r5r>r…rUr-r_© rHr¯r:rarr‡r2r0r7r8rrrrl•s(   zatlas_blas_info.calc_infoN©rrrr‚rlrrrrrÓ’s rÓc@óeZdZddgZddgZdS)rÒÚPTATLASrÚ ptf77blasÚptcblasN©rrrr„r‚rrrrrÒ¯ó rÒc@r;)rÔr<rr=r>Nr?rrrrrÔ´r@rÔc@óeZdZdgejZdS)rÕr‹N)rrrrÑr‚rrrrrÕ¹órÕc@rA)rÖr‹N)rrrrÒr‚rrrrrÖ½rBrÖc@seZdZdgZeZeZdS)r×ÚsatlasN)rrrr‚r'r(rrrrr×Ásr×c@seZdZdgZdd„ZdS)rÙrCc CsÜ| ¡}i}| dd¡}| ||j¡}| ||g¡}|dur dS| ¡}| ||d¡p.dg}|d}|rBtj  |¡}t ||gdd|d<dg|d <t d i|¤Ž\}} t |fi| ¤Žt |fi|¤Ž|j d i|¤ŽdS) NÚ atlas_librPrrrÂr¨r r rÔr) rRrfržr‚r²r™r³r5r>r…rUr-r_r9rrrrlÊs(   zatlas_3_10_blas_info.calc_infoNr:rrrrrÙÇs rÙc@s"eZdZddgZdgZeZeZdS)rØr<rÚtatlasN)rrrr„r‚r'r(rrrrrØäs rØc@seZdZddgZdgZdS)rÚr<rrENr?rrrrrÚës rÚc@r)rÛNrrrrrrÛðrrÛc@r)rÜNrrrrrrÜôrrÜc@ó&eZdZdZdZdgZeZdd„ZdS)rör¬ÚLAPACKcCsX| ¡}| dd¡}| ||j¡}| ||g¡}|durdSd|d<|jdi|¤ŽdS)NrrPr&r r)rRrfržr‚rTr_)rHr¯rarr:rrrrlþs zlapack_info.calc_infoN) rrrrDr„r‚r#rurlrrrrröøó  röc@ré)r÷r­Ú LAPACK_SRCc CsFt |||¡}g}|D]}| |g| |ddg¡¡q dd„|DƒS)Nz LAPACK*/SRCÚSRCcSrWrrXr7rrrr:r\z-lapack_src_info.get_paths..rërìrrrr•s zlapack_src_info.get_pathscs | ¡}d‰|D]}tj tj |d¡¡r|‰nqˆsdSd}d}d}d}d}|d}|d } ||} ||} ||d } ||d } d }d }dd„||  ¡Dƒdd„| |  ¡Dƒdd„|  ¡Dƒdd„|  ¡Dƒdd„||| ¡Dƒ}‡fdd„|Dƒ}tj ˆdd¡‰|‡fdd„dDƒ7}|‡fdd„dDƒ7}|‡fdd„dDƒ7}|‡fdd„dDƒ7}dd„|Dƒ}|ddœ}|jdi|¤ŽdS) Nr0zdgesv.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 cSóg|]}d|‘qS)zs%s.fr©r8rjrrrr:mrqz-lapack_src_info.calc_info..cSrK)zd%s.frrLrrrr:nrqcSrK)zc%s.frrLrrrr:orqcSrK)zz%s.frrLrrrr:prqcSrK)z%s.frrLrrrr:qrqcsg|] }tj ˆ|¡‘qSrr=rL©Úsrc_dirrrr:rr;rOÚINSTALLcóg|] }tj ˆ|d¡‘qS)zlamch.fr=©r8r))Úsrc_dir2rrr:uóÚsdczcrP)zlarfp.fr=rQrMrrr:wrScó"g|] }tj ˆd|d¡‘qS)Úilazlr.fr=rQrMrrr:xó"crU)rVzlc.fr=rQrMrrr:yrWcSrWr©r5r>rdrLrrrr:}r\r&©rpr r©ršr5r>rdr?rbr_)rHr5r9ÚallauxÚlauxÚlasrcÚsd_lasrcÚcz_lasrcÚsclauxÚdzlauxÚslasrcÚdlasrcÚclasrcÚzlasrcÚoclasrcÚozlasrcrpr:r)rNrRrrlsPþ     ÿþýü zlapack_src_info.calc_infoN) rrrrDr„r$rur•rlrrrrr÷ ó  r÷zŽ /* This file is generated from numpy/distutils/system_info.py */ void ATL_buildinfo(void); int main(void) { ATL_buildinfo(); return 0; } c Ksà| dg¡}| dg¡}t|ƒt|ƒf}|tvrt|Sttƒƒ}d}i}z7|jt||d\}}|r[t d|tj ¡r[|jt|dg|d\}}|s[t j t   d¡ddt|d d gd WnGty£|D]}t d |¡} | rt|  d ¡}|durznqe|dur†tj dd¡}|r”t|dt|ƒfgdnt|dgd|pžd|fYSw|s³t d|¡} | r³|  d ¡}|durÏt d|tj ¡rÂd}n$t d|¡t d|¡n|dkrÛt|dgdn t|dt|ƒfgd||f} t|<| S)NrPr1r¼z!undefined reference to `_gfortranÚgfortrana¿ ***************************************************** 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. ***************************************************** rmrnÚf90)ÚATLAS_REQUIRES_GFORTRANN)r rÔz#ATLAS_(?P\d+[.]\d+[.]\d+)_ÚversionÚ ATLAS_VERSIONÚ ATLAS_INFOrÓ)Ú NO_ATLAS_INFOr€z?.?.?z*ATLAS version (?P\d+[.]\d+[.]\d+)zundefined symbol: ATL_buildinfoz3.2.1_pre3.3.6z Status: %dz Output: %s)roéþÿÿÿ)rwÚtupleÚ_cached_atlas_versionÚ cmd_configrÚ get_outputÚatlas_version_c_textÚreÚsearchÚMrsrtr)r*rUÚ ExceptionÚgroupr5rvr"rr:) rrPr1rOr¨r7r:r!ÚorüÚresultrrrr-st    ÿ þ  ÷ ÿ€   ÿ ÿí    ÿr-c@steZdZeZgd¢ZdZdd„Zdd„Zdd„Z d d „Z d d „Z d d„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)rþ)r”r•r“r›r‡r¬ÚNPY_LAPACK_ORDERcCó$tdƒ}|r|jdi|¤ŽdSdS)Nr™TFr©rr_©rHr:rrrÚ_calc_info_mklÞó zlapack_opt_info._calc_info_mklcCsDtdƒ}|r|jdi|¤ŽdStdƒ}|r |jdi|¤ŽdSdS)Nr–Tr—Frrr€rrrÚ_calc_info_openblasåsz#lapack_opt_info._calc_info_openblascCr~)Nr“TFrrr€rrrÚ_calc_info_flameðr‚z lapack_opt_info._calc_info_flamecCs„tdƒ}|s tdƒ}|stdƒ}|stdƒ}|r@| dg¡}d|vs&d|vr6| ¡}|s.dSt|fi|¤Ž|jd i|¤Žd SdS) NrŽrrˆr‡rÔr!r#FTr)rrwÚ_get_info_lapackrUr_)rHr:rrörrrÚ_calc_info_atlas÷s$ z lapack_opt_info._calc_info_atlascCr~©Nr›TFrrr€rrrÚ_calc_info_accelerater‚z%lapack_opt_info._calc_info_acceleratecCóZtdƒ}|s+tjtjp dddtdƒ}|s"tjtjpdddiSt|d|fgd|S)Nr¹r0rƒrnr®Ú fblas_srcrÃ)rrsrtr'rr)rU©rHr:Úinfo_srcrrrÚ_get_info_blasszlapack_opt_info._get_info_blascCr‰)Nr¬r0rƒrnr­Ú flapack_srcrÃ)rrsrtr#rr$rUr‹rrrr…#sz lapack_opt_info._get_info_lapackcCsJ| ¡}|r#| ¡}t|fi|¤Žt|dgd|jdi|¤ŽdSdS)N©rortrÓTFr)r…rrUr_)rHr:Ú info_blasrrrÚ_calc_info_lapack.sz!lapack_opt_info._calc_info_lapackcCsJi}d|d<g|d<g|d<g|d<tjd ¡|d<|jd i|¤ŽdS) Nr&r rPr2rÔÚNPY_LAPACK_LIBSr8Tr)r5rvrbr_r€rrrÚ_calc_info_from_envvar8sz&lapack_opt_info._calc_info_from_envvarcCót|d |¡ƒƒS©Nz _calc_info_{}©r†r ©rHrrrrÚ _calc_infoBózlapack_opt_info._calc_infocCó”t|j|jƒ\}}t|ƒdkrtd |¡ƒ‚dtjvr!| ¡dS|D] }|  |¡r-dSq#d|vrHt j t j p8dddt j tj pBddddSdS)NrzElapack_opt_info user defined LAPACK order has unacceptable values: {}r’r¬r0rmrn)r†Ú lapack_orderÚorder_env_var_namerzr$r r5rvr“r˜rsrtr#rr$)rHr›r„r¬rrrrlEs  þ  ÿüzlapack_opt_info.calc_infoN)rrrr#rur›rœrrƒr„r†rˆrr…r‘r“r˜rlrrrrrþÖs     rþc@seZdZdZdZdd„ZdS)Ú_ilp64_opt_info_mixinNcCsTt| dg¡ƒ}| dd¡}| dd¡}|jd|fvrdS|jd|fvr&dSt|ƒS)NrÔÚBLAS_SYMBOL_PREFIXr0ÚBLAS_SYMBOL_SUFFIXF)ÚdictrwÚ symbol_prefixÚ symbol_suffixÚbool)rHr:rÌr¶ÚsuffixrrrÚ _check_infoas  z!_ilp64_opt_info_mixin._check_info)rrrr¢r¡r¥rrrrr]s rc@ó$eZdZeZddgZdZdd„ZdS)rÿrœržÚNPY_LAPACK_ILP64_ORDERcCs.t|dƒ}| |¡r|jdi|¤ŽdSdS)NÚ_lapackTFr©rr¥r_©rHrr:rrrr˜ts  z lapack_ilp64_opt_info._calc_infoN)rrrr%rur›rœr˜rrrrrÿoó  rÿc@óeZdZdZdZdS)rr0N©rrrr¡r¢rrrrr|src@óeZdZdZdZdS)rr0Ú64_Nr­rrrrr‚órc@sdeZdZeZgd¢ZdZdd„Zdd„Zdd„Z d d „Z d d „Z d d„Z dd„Z dd„Zdd„ZdS)r)r”r˜r•r›r‡r«ÚNPY_BLAS_ORDERcCr~)NršTFrrr€rrrrr‚zblas_opt_info._calc_info_mklcCr~)Nr˜TFrrr€rrrÚ_calc_info_blis–r‚zblas_opt_info._calc_info_bliscCr~)Nr•TFrrr€rrrrƒr‚z!blas_opt_info._calc_info_openblascCsHtdƒ}|s tdƒ}|stdƒ}|stdƒ}|r"|jdi|¤ŽdSdS)NrrrŠr‰TFrrr€rrrr†¤szblas_opt_info._calc_info_atlascCr~r‡rr€rrrrˆ±r‚z#blas_opt_info._calc_info_acceleratecCs¢tjtjpdddi}t|dgdtdƒ}|r"t|fi|¤Žn%tjtjp(dddtdƒ}|s>tjtjp8ddddSt|d |fgd |jd i|¤Žd S) Nr0rƒrnrrÓr«r®FrŠrÃTr) rsrtr&rrUrr'r)r_)rHr:r«r®rrrÚ_calc_info_blas¸szblas_opt_info._calc_info_blascCszi}d|d<g|d<g|d<g|d<tjd ¡|d<dtjvr3|d d ¡|d tjd ¡¡|jd i|¤Žd S) Nr&r rPr2rÔÚ NPY_BLAS_LIBSr8ÚNPY_CBLAS_LIBSr Tr)r5rvrbrer%r_r€rrrr“Îs  ÿz$blas_opt_info._calc_info_from_envvarcCr”r•r–r—rrrr˜Ür™zblas_opt_info._calc_infocCrš)NrzAblas_opt_info user defined BLAS order has unacceptable values: {}r´r«r0rmrn)r†Ú blas_orderrœrzr$r r5rvr“r˜rsrtr'rr))rHr¶r„r«rrrrlßs   ÿüzblas_opt_info.calc_infoN)rrrr'rur¶rœrr²rƒr†rˆr³r“r˜rlrrrrr‡s  rc@r¦)rrœržÚNPY_BLAS_ILP64_ORDERcCs*t|ƒ}| |¡r|jdi|¤ŽdSdS)NTFrr©rªrrrr˜ús  zblas_ilp64_opt_info._calc_infoN)rrrr(rur¶rœr˜rrrrrõr«rc@r¬)rr0Nr­rrrrrr°rc@r®)rr0r¯Nr­rrrrrr°rc@seZdZdZdZgZeZdS)Ú cblas_inforÚCBLASN)rrrrDr„r‚r'rurrrrr¸ s r¸c@s.eZdZdZdZdgZeZdd„Zdd„Z dS)rõr«ÚBLASc CsÖ| ¡}| dd¡}| ||j¡}| ||g¡}|durdS| ¡|d<t ¡dkrKd|d<tƒ}| dd¡}| |d¡}|rJ|||d<dg|d <n|  |¡}|durad |d<||d<dg|d <|j d i|¤ŽdS) NÚ blas_libsrPr2ÚWindowsr&r Ú cblas_libsr rÔr¨r) rRrfržr‚rTr™r¦Úsystemr¸Úget_cblas_libsr_) rHr¯rar»r:Úcblas_info_objÚ cblas_optr½r0rrrrls,       €  zblas_info.calc_infoc CsFtƒ}t ¡}t d¡}tj |d¡}z‰t|dƒ }|  |¡Wdƒn1s)wYz |j |g||  ¡d}Wnt j jt j jfyQYWt |¡dSw|ddg|ddg|ddgdgfD]-}z |j|tj |d ¡||d | d g¡d |WWt |¡St j jy”YqgwWt |¡dSt |¡w) 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.cÚwtN)Ú output_dirr2rPrr«úa.outr1r8©rPr1Úextra_postargs)rÚtempfileÚmkdtempr)r*r5r>r?r÷ÚwriteÚcompiler™Ú distutilsÚ ccompilerÚ CompileErrorÚ LinkErrorÚshutilÚrmtreeÚlink_executablerw) rHr:r¨Útmpdirr!rVrjÚobjr-rrrr¿8sD   ÿ  ÿðÿ ý  ýÿø  ÿzblas_info.get_cblas_libsN) rrrrDr„r‚r'rurlr¿rrrrrõs rõc@sZeZdZdZdZdgZgZeZe dd„ƒZ e dd„ƒZ dd„Z d d „Z d d „Zd d„ZdS)rßr•ÚOPENBLAScCó(z |j |jd¡WStyYdSw)Nr¡r0©rArwrDrrNrrrr¡ó  ÿzopenblas_info.symbol_prefixcCrÖ)Nr¢r0r×rNrrrr¢ˆrØzopenblas_info.symbol_suffixc Cstƒ}| ¡}| dd¡}| ||j¡}| ||g¡}|jdkr?|dur?ddlm}||d}|r>|jdkr>|  ||¡}d}n|rGd }d |d <|durMdS|  ¡} t |fi| ¤Ž|sb|  |¡sbdSd g|d <|j rv|d d|j fg7<|jr…|d d|jfg7<|S)NÚ openblas_libsrPrŸr)Ú new_fcompiler)Ú c_compilerÚgnu95TFr¨r r rÔržrŸ)rrRrfržr‚rTr¥Únumpy.distutils.fcompilerrÚÚcheck_msvc_gfortran_libsr[rUÚ check_symbolsr¡r¢) rHr¨r¯rarÙr:rÚrjÚskip_symbol_checkr^rrrr˜s6    € zopenblas_info._calc_infocCs(| ¡}|dur|jdi|¤ŽdSdS)Nr)r˜r_r€rrrrl¸sÿzopenblas_info.calc_infoc Csg}|D] }|D]}tj ||d¡}tj |¡r | |¡nqdSq|jj}tj t ¡d|¡}tj |¡s>t  |¡|g|gddœ} tj ||d¡} tj ||d¡} t | dƒ} |   d |¡¡Wdƒn1spwYt | dƒ } Wdƒ| S1s†wY| S) Nr Úbuildr&)r1rPr z .fobjectsz .cobjectsrRr) r5r>r?rdrer9rÚgetcwdrYÚmakedirsr÷rÊ) rHr1rPÚ library_pathsÚlibraryÚ library_dirÚfullpathr‡rÓr:Ú fake_lib_fileÚfake_clib_filerjrrrrÞ½s:  þþ  þ ÿ  ÿýz&openblas_info.check_msvc_gfortran_libsc sNd}tƒ}t ¡}d ‡fdd„ˆjDƒ¡}d ‡fdd„ˆjDƒ¡}t d¡t||d}tj  |d¡}tj  |d ¡} z|d } Wn t yMg} YnwzRt |d ƒ } |   |¡Wdƒn1sdwY|j |g|d } z|j| | |d |d| dd}Wn tjjyd}Yn wWt |¡|SWt |¡|St |¡w)NFrc3ó"|] }dˆj|ˆjfVqdS)zvoid %s%s%s();N©r¡r¢©r8Ú symbol_namerNrrrBãó€ýþz.openblas_info.check_symbols..c3rê)z %s%s%s();NrërìrNrrrBçrîz %(prototypes)s int main(int argc, const char *argv[]) { %(calls)s return 0; })Ú prototypesÚcallsrÂrÅr8rérÄrPr1rÆT)rrÈrÉr?Ú_require_symbolsr)r*r r5r>ryr÷rÊrËrÒrÌrÍrÏrÐrÑ) rHr:r}r¨rÓrïrðr!rVr(Ú extra_argsrjrÔrrNrrßÝsPýý ú  ÿ  ÿþÿÿ ý  ÿzopenblas_info.check_symbolsN)rrrrDr„r‚ròr'ruÚpropertyr¡r¢r˜rlrÞrßrrrrrßzs  ) rßc@s$eZdZdZdZdgZdgZeZdS)ràr•rÕÚzungqr_N) rrrrDr„r‚ròr'rurrrrrà s ràc@seZdZddgZdS)rár•r¬N)rrrr‚rrrrrá ó rács6eZdZdZdZdgZddgZeZ‡fdd„Z ‡Z S)rèržÚOPENBLAS_ILP64Ú openblas64Údgemm_Ú cblas_dgemmcs(tƒ ¡}|dur|ddg7<|S)NrÔ)ÚHAVE_BLAS_ILP64N©Úsuperr˜r€©r9rrr˜ s zopenblas_ilp64_info._calc_info) rrrrDr„r‚ròr(rur˜Ú __classcell__rrrþrrè srècs$eZdZgd¢Z‡fdd„Z‡ZS)ré)rùrúrõÚLAPACKE_zungqrcs$tƒ ¡}|r|ddg7<|S)NrÔ)Ú HAVE_LAPACKENrür€rþrrr˜" s z%openblas_ilp64_lapack_info._calc_info)rrrròr˜rÿrrrþrré sréc@s"eZdZdZdZdgZdZdZdS)rærœÚ OPENBLAS64_r¯r0N)rrrrDr„r‚r¢r¡rrrrræ( s ræc@r)rçNrrrrrrç0 rrçc@rF)râr˜ÚBLIScCsj| ¡}| dd¡}| ||j¡}| ||g¡}|durdS| ¡}t|ddg|d|jdi|¤ŽdS)NÚ blis_libsrPr¨r )r rÔr2r)rRrfržr‚r²r™rUr_)rHr¯rarr:rÖrrrrl9 s ýzblis_info.calc_infoN) rrrrDr„r‚r'rurlrrrrrâ3 rHrâc@s.eZdZdZdZdgZeZdd„Zdd„Z dS)rÝa$ 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. r“c Csætƒ}t ¡}t d¡}tj |d¡}tj |d¡}| dg¡}zLt |dƒ }|  |¡Wdƒn1s6wY|j |g|d} z|j | ||d|d |d WWt  |¡d StjjylYWt  |¡d Swt  |¡w) 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; }rÂrÅr8rÃNrñrPr1rÆTF)rrÈrÉr)r*r5r>r?rwr÷rÊrËrÒrÐrÑrÌrÍrÏ) rHr:r¨rÓr!rVr(rórjrÔrrrÚcheck_embedded_lapackX s.    ÿþýý z flame_info.check_embedded_lapackcCs | ¡}| d|j¡}| ||g¡}|durdS| ¡}t|fi|¤Ž| |¡r3|jdi|¤ŽdStdƒ}|s;dS|D]6}t ||t ƒrS|  |g¡||||<q=t ||t ƒrg|  |d¡||||<q=|  |d¡||||<q=| |¡rƒ|jdi|¤ŽdSdS)NrPr¹rr0) rRržr‚r²r[rUrr_rrFryrwrq)rHr¯Ú flame_libsr:r^rõrOrrrrlv s*  ÿzflame_info.calc_infoN) rrrrrDr‚r"rurrlrrrrrÝJ s  rÝc@s$eZdZdZddgZeZdd„ZdS)rår›ÚveclibcCs(tj d¡}|r |g}n| d|j¡}dd„|Dƒ}tjdkr’t dd¡s’g}g}tƒdd…dksBd tƒvsBd tƒvsBdt ¡vrEd }nd }tj   d ¡rgd|vrg|rY|  dg¡|  dg¡|  ddg¡ntj   d¡r†d|vr†|ry|  dg¡|  dg¡|  ddg¡|r’|j ||ddgddS)NÚ ACCELERATErPcSsg|]}| ¡ ¡‘qSr)r›ro)r8r0rrrr:¦ óz-accelerate_info.calc_info..r¤Ú_PYTHON_HOST_PLATFORMéüÿÿÿÚi386ÚintelÚx86_64rtrz0/System/Library/Frameworks/Accelerate.framework/r›z-msse3z5-I/System/Library/Frameworks/vecLib.framework/Headersz-Wl,-frameworkz-Wl,Acceleratez,/System/Library/Frameworks/vecLib.framework/rz -Wl,vecLib)rorƒr )r7r8rÔ) r5rvrwržr‚r`r¦Úgetenvr r>r+r%r_)rHrPr¿Ú link_argsr rrrrlŸ sN   ÿ    ÿ  ÿÿþzaccelerate_info.calc_infoN)rrrrDr‚r'rurlrrrrråš r«råc@ré)rør®ÚBLAS_SRCcCóDt |||¡}g}|D]}| |g| |dg¡¡q dd„|DƒS)Nr«cSrWrrXr7rrrr:Ù r\z+blas_src_info.get_paths..rërìrrrr•Ô rîzblas_src_info.get_pathscs’| ¡}d‰|D]}tj tj |d¡¡r|‰nqˆsdSd}d}d}‡fdd„||| ¡Dƒ}dd„|Dƒ}|d d œ}|jd i|¤ŽdS) Nr0zdaxpy.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 crP)z.fr=rLrMrrr:û sÿz+blas_src_info.calc_info..cSrWrrXrLrrrr:þ r\r&rYrrZ)rHr5r9Úblas1Úblas2Úblas3rpr:rrMrrlÛ s$þ ÿ zblas_src_info.calc_infoN) rrrrDr„r)rur•rlrrrrrøÌ rhrøc@s*eZdZdZeZdgZdd„Zdd„ZdS)rêr ÚX11cCstj|ttddS)Nr)rrJÚdefault_x11_lib_dirsÚdefault_x11_include_dirsrNrrrrJ s þzx11_info.__init__cCsžtjdvrdS| ¡}| ¡}| dd¡}| ||j¡}| ||g¡}|dur)dSd}|D] }| |d¡r9|}nq-|durEt ||gd|j di|¤ŽdS)N)r+Úx11_libsrPzX11/X.hrÂr) r`r¦rRr™rfržr‚rTr³rUr_)rHr¯r2rarr:Úinc_dirr9rrrrl s$   þzx11_info.calc_infoN) rrrrDr-rur‚rJrlrrrrrê s  rêc@s(eZdZdZdZeZdd„Zdd„ZdS)Ú _numpy_infor±cCsg}z;t|jƒ}g}|j tj¡D] }|dkrn| |¡qz | t|dƒƒ¡Wn ty3Ynw| t   d¡¡Wn t yFYnwt   d¡}| |¡t   d¡}||vr_| |¡t D]}tj  |tj  |¡¡}||vrw| |¡qatj|g|ddS)Nr0Ú get_includer/Ú platincluder)Ú __import__Ú modulenamer^rbr5r6rer†ÚAttributeErrorÚ sysconfigÚget_pathÚ ImportErrorrGr>r?r‡rrJ)rHr2Úmoduler¶rÚ py_incl_dirÚ py_pincl_dirr9rrrrJ& s>   ÿ ÿ     € þz_numpy_info.__init__c Csàzt|jƒ}Wn tyYdSwi}g}dD]}t||dƒ}|dur%q|j ¡dt|ƒf|j ¡dfg}t||d| ¡}d}|D]}| |t j   |jd¡¡rX|}nqF|durdt||gd|rn|j di|¤ŽdS)N)Ú __version__rlÚ_VERSIONrÓz arrayobject.hrÂr) rrr#r†Úupperr"rUr™r³r5r>r?r_) rHr$r:rÌrÚvrsr2rr9rrrrlG sD ÿ  ÿ þ  ÿÿüz_numpy_info.calc_infoN) rrrrDrr,rurJrlrrrrr! s  !rc@r¬)rür³N©rrrrDrrrrrrüf r°rüc@r¬)rûr±Nr+rrrrrûk r°rûc@r¬)rùr¯Nr+rrrrrùp r°rùc@seZdZdZdd„ZdS)rýr´c Csjd}t d¡rt d¡df}|ddur‚d}zddl}d}Wncty}zWt|ƒ}zddl}d}WnDtyv}z8t|ƒ}zddl}d}Wn%tyk}zt|ƒ}t |¡t |¡t |¡WYd}~nd}~wwWYd}~nd}~wwWYd}~nd}~ww|d  ¡  ¡|df}|dd vr t d |d|dfƒ‚|dtj d<|j d it|dƒ¤ŽdS) N)NNÚNUMERIXzenvironment varr)r¯Ú defaulted)r²r-)r³r-rt)r²r³r¯zonumerix selector must be either 'Numeric' or 'numarray' or 'numpy' but the value obtained from the %s was '%s'.r)r5rr¯r#r?r±r³rr:r›ror$rvr_r) rHÚwhichr¯rŒÚmsg1r±Úmsg2r³Úmsg3rrrrlx sH    €ü€û€û þznumerix_info.calc_infoN)rrrrDrlrrrrrýu s rýc@rÄ)rúcCs^zddlm}Wn tyYdSwtj tj |j¡d¡}|jtj |d¡g|gddS)NrrVzfortranobject.c©rpr2) Ú numpy.f2pyr°r#r5r>r?r…r^r_)rHr°Úf2py_dirrrrrl› s ÿÿzf2py_info.calc_infoNrÅrrrrrúš rörúc@ó$eZdZdZdZdd„Zdd„ZdS)rr½ÚBOOSTcCr)Nzboost*cSrWrrXr7rrrr:¯ r\z/boost_python_info.get_paths..rërìrrrr•ª rîzboost_python_info.get_pathsc CsÜ| ¡}d}|D]}tj tj |dddd¡¡r|}nq|s!dSt d¡g}t d¡}||vr5| |¡tj |ddd¡}ttj |d¡ƒ}|ttj |d d¡ƒ7}d |g||d œfg|gd œ}|rl|j d i|¤ŽdS)Nr0r-ÚpythonrVz module.cppr/rú*.cppröÚboost_python_src)r2rp©rPr2r) ršr5r>rdr?r!r"rerr_) rHr5rNr9Ú py_incl_dirsr&Úsrcs_dirÚbpl_srcsr:rrrrl± s8ÿý   ÿÿüzboost_python_info.calc_infoN©rrrrDr„r•rlrrrrr¦ ó  rc@r5)rr¾ÚAGG2cCr)Nzagg2*cSrWrrXr7rrrr:Ö r\z'agg2_info.get_paths..rërìrrrr•Ñ rîzagg2_info.get_pathscCsÖ| ¡}d}|D]}tj tj |dd¡¡r|}nq|sdStjdkr1ttj |dddd¡ƒ}nttj |dd¡ƒ}|tj |dddd ¡g7}d |tj |d ¡gd œfgtj |d ¡gd œ}|ri|jdi|¤ŽdS)Nr0rVzagg_affine_matrix.cppr+r¦zagg_win32_bmp.cppr8rzagg_platform_support.cppÚagg2_srcr/r2r:r) ršr5r>rdr?r`r¦rr_)rHr5rNr9Ú agg2_srcsr:rrrrlØ s8þ ÿþÿÿúzagg2_info.calc_infoNr>rrrrrÍ r?rc@sDeZdZdZdZdZdZdZdZdZ dZ dd„Z d d „Z d d „Z dS) Ú_pkg_config_infoNÚ PKG_CONFIGz pkg-configr0z --modversionz--cflagscCs|jtjvr tj|jS|jSr)Úconfig_env_varr5rvÚdefault_config_exerNrrrÚget_config_exe s  z_pkg_config_info.get_config_exec CsL|d|jd|}zt |¡}Wn ttjfyYdSwt|ƒ}|S)Nú )Úappend_config_exeÚ subprocessÚ check_outputÚOSErrorÚCalledProcessErrorr )rHÚ config_exeÚoptionÚcmdr{rrrÚget_config_output sÿz"_pkg_config_info.get_config_outputcCsnt| ¡ƒ}|st d||jf¡dSi}g}g}g}g}g}g}| ||j¡} | rP| |jj   d¡d  ¡t | ƒf¡|j rP| |j d|  dd¡df¡|jrk| |d¡} | rk| |jd|  dd¡df¡| |d¡} | r£|   ¡D]+} | dd…d kr‹| | dd…¡qw| dd…d kr| | dd…¡qw| | ¡qw| ||j¡} | rõ|   ¡D]D} | dd…d krÄ| | dd…¡q°| dd…d krïd | vrã| dd…  d ¡\} }| | |f¡q°| | dd…df¡q°| | ¡q°|rýt||d|rt||d|rt||d|rt||d|r!t||d|r*t||d|r5|jdi|¤ŽdS)Nz-File not found: %s. Cannot determine %s info.r.r€z_%sÚ_z --releasez--libsrmz-lz-Lú-Iz-Dú=rÓrÃrÁrÂ)r8)r7r)r rGrrtrDrQÚ version_flagrer9rrbr)r"Úversion_macro_namerÚrelease_macro_nameÚ cflags_flagrUr_)rHrNr:rÌrPr1r2r8r7rlÚreleaseÚoptsraÚnrrrrrl s„ ÿÿ  ÿÿ   ÿÿ           z_pkg_config_info.calc_info)rrrrDrErFrIrVrWrUrXrGrQrlrrrrrC÷ s rCc@s,eZdZdZdZdZdZdZdZdZ dZ d S) rr¿Ú WX_CONFIGz wx-configr0Ú WX_VERSIONÚ WX_RELEASEz --versionz --cxxflagsN) rrrrDrErFrIrVrWrUrXrrrrrP src@óeZdZdZdZdZdS)r rÀrÁÚGDK_PIXBUF_XLIB_VERSIONN©rrrrDrIrVrrrrr [ ór c@r_)r rÂrÃÚGDK_PIXBUF_VERSIONNrarrrrr a rbr c@r_)r rÇrÈÚGDK_X11_VERSIONNrarrrrr g rbr c@r_)r rÅrÆÚ GDK_VERSIONNrarrrrr m rbr c@óeZdZdZdZdZdS)r rÄreNrarrrrr s rbr c@r_)rrÉrÊÚGTK_X11_VERSIONNrarrrrry rbrc@r_)rrËrÌÚ GTK_VERSIONNrarrrrr rbrc@rf)rrÍÚ XFT_VERSIONNrarrrrr… rbrc@rf)rrÎÚFREETYPE2_VERSIONNrarrrrr‹ rbrc@s"eZdZdZdZdgZdd„ZdS)rrÐÚAMDc Cs¬| ¡}| dd¡}| ||j¡}| ||g¡}|durdS| ¡}d}|D]}| |d¡}|r:tj  |d¡}nq&|durLt ||gdgd|gd|j di|¤ŽdS) NÚamd_libsrPzamd.hr)Ú SCIPY_AMD_HNrS©r2rÔÚ swig_optsr) rRrfržr‚rTr™r³r5r>r…rUr_) rHr¯rarlr:r2rr9r)rrrrl– s*  þþzamd_info.calc_infoN)rrrrDr„r‚rlrrrrr‘ s  rc@s&eZdZdZdZeZdgZdd„ZdS)rrÏÚUMFPACKc CsÆ| ¡}| dd¡}| ||j¡}| ||g¡}|durdS| ¡}d}|D]}| |ddgd¡}|r=tj  |d¡}nq&|durOt ||gdgd|gd t |fit d ƒ¤Ž|j d i|¤ŽdS) NÚ umfpack_libsrPr0rÏz umfpack.hr)ÚSCIPY_UMFPACK_HNrSrnrÐr) rRrfržr‚rTr™r³r5r>r…rUrr_) rHr¯rarqr:r2rr9r)rrrrl¶ s, þþzumfpack_info.calc_infoN) rrrrDr„r.rur‚rlrrrrr° s  rc OsÞg}|D]}|s qt|ƒr|g}| |¡q|}|sgSt|ƒdkr0tdd„tt|dƒgƒ}n4t|ƒdkrSg}|dD]}|dD]}| ttj  ||¡ƒ¡qBqá szcombine_paths..rrmNz (paths: %s)ru) r rerzrÚmaprr%r5r>r?r³rr‰)r¿Úkwsrõrœr|Úa0Úa1rrrr³Ò s,     ÿÿ"r³rtrmrƒ)r¨úc++r&rjr¨rxr&rj)rrtrmrƒc sŽg}| ¡D]-\‰}ˆdkr| |¡qˆˆvr/ˆdvr'‡‡fdd„|Dƒqˆˆ |¡q|ˆˆ<q|rEttdd„|Dƒƒ}|ˆd<dS)Nr )r1r2r7r8r3rÔcs&g|]}|ˆˆvrˆˆ |¡‘qSr)re)r8Úvv©r9r~rrr:ú s&zdict_append..cSsg|]}t |d¡‘qSrÀ)Ú language_maprw)r8rrrrr: r )ryrer%Úinv_language_mapÚmax)r9ruÚ languagesrrrrzrrUð s  rUrcCsHddl}| d¡}|jddddddd |j|d d…d \}}||fS) Nrzusage: %prog [-v] [info objs]z-vz --verboseÚ store_trueÚverboseFz"be verbose and print more messages)ÚactionÚdestrÚhelprt)r¿)ÚoptparseÚ OptionParserÚ add_optionÚ parse_args)rar„ÚparserrZr¿rrrÚ parseCmdLine s  þr‰c Csddl}|dur tj}t|ƒ\}}|jrt tj¡nt tj¡g}|D]}|dd…dkr3|d}|  |¡q%| }t ƒ  ¡}|  ¡D]+\}} |  | ¡sOqEt| tƒrX| turYqE|sf||vr`qE|| |¡=| ƒ} d| _|  ¡} qE|r~t dd |¡¡dSdS)NréûÿÿÿÚ_informzInfo classes not defined: %sru)Úinspectr`rar‰r€rÚ set_thresholdÚDEBUGrxreÚglobalsr{ryÚisclassÚ issubclassrrdÚ verbosityrr:r?) rarŒrZr¿Ú show_onlyr[Úshow_allÚ_gdict_rr¨Úconfrõrrrr” s:       ÿr”Ú__main__rÀ)r)Árr`r5rvr{rsrJr)rÚ functoolsrÚ configparserrrr@Údistutils.errorsrÚdistutils.distrr!Únumpy.distutilsrÚdistutils.utilr Únumpy.distutils.exec_commandr r Únumpy.distutils.misc_utilr r rÚnumpy.distutils.command.configrrsrrrÚdistutils.ccompilerrÌrÈrÐÚ__all__r¦Ú_bitsÚ architectureÚ platform_bitsrr"r*r>r?Úget_config_varrEr=rGr>rrrHrFrIr.rJr…Ú vcpkg_dirÚ specifierÚvcpkg_installedÚ vcpkg_rootrNÚ conda_dirr+Úglobbed_x11_dirrbÚ x11_so_dirr%r÷ÚdevnullrjÚPopenÚPIPEr)rLr?Ú communicateÚdecoder›ÚtripletÚ returncoder¶Úinsertrer§rmr†rrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.rrërìrírîrïrðrñròrórôrÞrãrärÑrÓrÒrÔrÕrÖr×rÙrØrÚrÛrÜrör÷rurrr-rþrrÿrrrrrrr¸rõrßràrárèrérærçrârÝrårørêrrürûrùrýrúrrrCrr r r r r rrrrrrr³r{r|rUr‰r”rrrrrÚs´'             'ÿÿþÿ  þ   €ÿÿÿ ÿý €ó$ SWz/       $Eow I n f  P27E% '*Y "  ÿ