B «@`ñ¥ã @s¤ 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*dkrxdej1 2e 3d¡d¡ga4gZ5ga6dgZ7gZ8gZ9dd gZ:d!gZ;d"d#„e:DƒZ:d$d#„e;DƒZ;d%d&„Ze>r2ej1 ?e>¡Z@e* ,¡dd(krèd)ZAnd*ZAej1 2e@d+¡ZBx6ej1 2eBeAd,¡ej1 2eBeAd-¡gD]ZCed?gZ7e0d@dAd3ge-ƒZ8dBdCd8gZ9ej1 FdD¡redEƒZGeGrej1 HeGd¡dZIe8 JeIdDg¡e9 JdFdGg¡eKejLdHƒˆZMyejNdIdJgejOeMdKZPWneQefk rVYnNXeReP S¡d T¡ U¡ƒZVePjWdkr¤e8ej1 2dLeV¡g7Z8t4ej1 2dLeV¡g7a4WdQRXej1 2ejXd!¡t4krt4 Ydej1 2ejXd!¡¡t6 Zej1 2ejXd¡¡e7 Zej1 2ejXdM¡¡dNd#„t4Dƒa4dOd#„e5DƒZ5dPd#„t6Dƒa6dQd#„e7DƒZ7eƒZ[dRdS„Z\dTZ]dUdV„Z^dWdX„Z_d dYdZ„Z`Gd[d\„d\eƒZaGd]d^„d^eƒZbGd_d`„d`eaƒZcGdadb„dbeaƒZdGdcdd„ddeaƒZeGdedf„dfeeƒZfGdgdh„dheaƒZgGdidj„djeaƒZhGdkdl„dleaƒZiGdmdn„dneaƒZjGdodp„dpeiƒZkGdqdr„dreaƒZlGdsdt„dteaƒZmGdudv„dveaƒZnGdwdx„dxeaƒZoGdydz„dzeaƒZpGd{d„dƒZqGd|d}„d}eqƒZrGd~d„deqƒZsGd€d„desƒZtGd‚dƒ„dƒesƒZuGd„d…„d…esƒZvGd†d‡„d‡esƒZwGdˆd‰„d‰esƒZxGdŠd‹„d‹esƒZyGdŒd„desƒZzGdŽd„deqƒZ{Gdd‘„d‘eqƒZ|Gd’d“„d“e|ƒZ}Gd”d•„d•e|ƒZ~Gd–d—„d—eqƒZGd˜d™„d™eƒZ€Gdšd›„d›eƒZGdœd„de€ƒ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¯eqƒZ‹Gd°d±„d±eqƒZŒd²ZiZŽd³d´„ZGdµd¶„d¶eqƒZGd·d¸„d¸ƒZ‘Gd¹dº„dºee‘ƒZ’Gd»d¼„d¼e’ƒZ“Gd½d¾„d¾e’ƒZ”Gd¿dÀ„dÀeqƒZ•GdÁd„dÂe•e‘ƒZ–GdÃdÄ„dÄe–ƒZ—GdÅdÆ„dÆe–ƒZ˜GdÇdÈ„dÈeqƒZ™GdÉdÊ„dÊeqƒZšGdËdÌ„dÌešƒZ›GdÍd΄dÎe›ƒZœGdÏdЄdÐeœƒZGdÑdÒ„dÒe›ƒZžGdÓdÔ„dÔežƒZŸGdÕdÖ„dÖežƒZ Gd×dØ„dØeŸe ƒZ¡GdÙdÚ„dÚešƒZ¢GdÛdÜ„dÜeqƒZ£GdÝdÞ„dÞeqƒZ¤Gdßdà„dàeqƒZ¥Gdádâ„dâeqƒZ¦Gdãdä„däeqƒZ§Gdådæ„dæe§ƒZ¨Gdçdè„dèe§ƒZ©Gdédê„dêe§ƒZªGdëdì„dìeqƒZ«Gdídî„dîeqƒZ¬Gdïdð„dðeqƒZ­Gdñdò„dòeqƒZ®Gdódô„dôeqƒ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µGdd„de¯ƒZ¶Gdd„de¯ƒZ·Gdd„de¯ƒZ¸Gdd„de¯ƒZ¹Gd d „d eqƒZºGd d „d eqƒZ»d d„Z¼dddddœZ½dddddœZ¾dd„Z¿d!dd„ZÀd"dd„ZÁeÂdk r eÁƒdS(#av 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 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Ú64bitcCsts tƒatS)N)Úglobal_compilerÚ_customized_ccompiler©rrú?/tmp/pip-unpacked-wheel-ecq9wray/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!cCsD|dkrtdƒ‚|dkr|Sg}x|D]}| |d|g¡q&W|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Ús r)Úwin32zC:\Ú exec_prefixÚlibsÚ.Úincludezinclude/suitesparseÚlibcCsg|]}| dtj¡‘qS)ú/)rÚosÚsep)Ú.0Údrrrú sr5cCsg|]}| dtj¡‘qS)r0)rr1r2)r3r4rrrr5scs@tj ˆ¡‰t ‡fdd„tDƒ¡t ‡fdd„tDƒ¡dS)z5Add a package manager root to the include directoriesc3s|]}tj ˆ|¡VqdS)N)r1ÚpathÚjoin)r3r4)Ú library_rootrrú sz"add_system_root..c3s|]}tj ˆ|¡VqdS)N)r1r6r7)r3r4)r8rrr9sN)r1r6ÚnormpathÚdefault_lib_dirsr$Ú _lib_dirsÚdefault_include_dirsÚ _include_dirs)r8r)r8rÚadd_system_roots  r?ÚvcpkgrZx86Zx64Ú installedz-windowsz-windows-staticÚcondaz..ÚLibraryz/usr/local/libz/opt/libz/usr/libz/opt/local/libz/sw/libz/usr/local/includez /opt/includez /usr/includez/opt/local/include/ufsparsez/opt/local/includez /sw/includez/usr/include/suitesparsez/usr/local/srcz/opt/srcz/sw/srcz/usr/X11R6/libz /usr/X11/libz/usr/X11R6/includez/usr/X11/includez /usr/lib/X11z/usr/lib/*/libX11.soz/usr/lib/X11/includez/usr/include/X11ÚwZgccz-print-multiarch)ÚstdoutÚstderrz /usr/lib/ÚsrccCsg|]}tj |¡r|‘qSr)r1r6Úisdir)r3Ú_mrrrr5fscCsg|]}tj |¡r|‘qSr)r1r6rH)r3rIrrrr5gscCsg|]}tj |¡r|‘qSr)r1r6rH)r3rIrrrr5hscCsg|]}tj |¡r|‘qSr)r1r6rH)r3rIrrrr5iscCs,d}tjdko*tj |¡o*tj |¡ |¡S)Nz//System/Library/Frameworks/Accelerate.frameworkÚdarwin)ÚsysÚplatformr1r6ÚislinkÚrealpathÚ startswith)ÚfilenameZ accelpathrrrÚis_symlink_to_acceleratensrQaOFound {filename}, but that file is a symbolic link to the MacOS Accelerate framework, which is not supported by NumPy. You must configure the build to use a different optimized library, or disable the use of optimized BLAS and LAPACK by setting the environment variables NPY_BLAS_ORDER="" and NPY_LAPACK_ORDER="" before building NumPy.cCsÐg}yt}Wntk r*tjd}Yn:Xtj tj tj |¡¡d|¡}tj  |¡rd|  |¡ytj  d¡}Wnt k rˆYn&Xtj ||¡}tj  |¡r®|  |¡tj  |¡rÌ|  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__Ú NameErrorrKÚargvr1r6r7ÚsplitÚabspathÚisfileÚappendÚ expanduserÚKeyError)ÚfnameÚ filenamesÚfZsysfileÚ user_filerrrÚget_standard_file~s&     r`c CsTtj |d¡}dd„|Dƒ}|dkr,|gfS| d¡p>| d¡}t|ƒ}| d¡| d¡}|rŠ|dkr|td|›d|›ƒ‚|dd…}n|d kr¦td|›d |›ƒ‚| ¡ d ¡}g}|r|  ¡}x„|D]0} | sÖqÌ| |krê|  | ¡qÌ| |krÌ|  | ¡qÌWnJg}xD|D]<} | sq | |kr2|  | ¡q | |kr |  | ¡q W||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` NcSsg|] }| ¡‘qSr)Úlower)r3Úorderrrrr5¿sz$_parse_env_order..ú^ú!ézEnvironment variable 'z1' may only contain a single (prefixed) negation: rz,' may not mix negated an non-negated items: ú,) r1ÚenvironÚgetrOÚlistÚcountr#rarVÚcopyrYÚremove) Z base_orderÚenvZ order_strÚnegZ order_str_lZsum_negZordersÚ unknown_orderZ allow_orderrbrrrÚ_parse_env_order¢sF      rpcJCs°tttttttttt t t t t ttttttttttttttttttt t!t"t#t$t%t&t't(t)t)t*t+t,t-t.t/t0t1t2t3t4t5t6t7t7t8t8t9t:t:t;t;tt?t@tAdœI B| C¡tD¡}|ƒ E|¡S)zg notfound_action: 0 - do nothing 1 - display warning message 2 - raise error )IÚatlasÚ atlas_threadsÚ atlas_blasÚatlas_blas_threadsÚ lapack_atlasZlapack_atlas_threadsÚ atlas_3_10Úatlas_3_10_threadsÚatlas_3_10_blasÚatlas_3_10_blas_threadsZlapack_atlas_3_10Zlapack_atlas_3_10_threadsÚflameÚmklÚopenblasÚopenblas_lapackÚopenblas_clapackÚblisÚ lapack_mklÚblas_mklÚ openblas64_Zopenblas64__lapackÚopenblas_ilp64Zopenblas_ilp64_lapackÚx11Zfft_optÚfftwÚfftw2Úfftw3ÚdfftwÚsfftwÚ fftw_threadsÚ dfftw_threadsÚ sfftw_threadsÚdjbfftÚblasÚlapackÚ lapack_srcÚblas_srcÚnumpyÚf2pyÚNumericÚnumericÚnumarrayÚnumerixZ lapack_optZlapack_ilp64_optZlapack_ilp64_plain_optZ lapack64__optÚblas_optZblas_ilp64_optZblas_ilp64_plain_optZ blas64__optÚ boost_pythonÚagg2ÚwxÚgdk_pixbuf_xlib_2zgdk-pixbuf-xlib-2.0Ú gdk_pixbuf_2zgdk-pixbuf-2.0ÚgdkÚgdk_2zgdk-2.0Ú gdk_x11_2z gdk-x11-2.0Ú gtkp_x11_2z gtk+-x11-2.0Úgtkp_2zgtk+-2.0ÚxftÚ freetype2ÚumfpackÚamd)FÚ 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Ú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_inforhrarÚget_info)ÚnameÚnotfound_actionZclrrrréõs– réc@seZdZdZdS)Ú NotFoundErrorz1Some third-party program or library is not found.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrìKsrìc@seZdZdZdS)ÚAliasedOptionErrorz‹ Aliases entries in config files should not be existing. In section '{section}' we found multiple appearances of options {options}.N)rírîrïrðrrrrrñOsrñc@seZdZdZdS)Ú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.N)rírîrïrðrrrrròUsròc@seZdZdZdS)Ú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]).N)rírîrïrðrrrrró]sróc@seZdZdZdS)Ú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.N)rírîrïrðrrrrrôdsrôc@seZdZdZdS)Ú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.N)rírîrïrðrrrrrõlsrõc@seZdZdZdS)ÚLapackILP64NotFoundErrorz† 64-bit Lapack libraries not found. Known libraries in numpy/distutils/site.cfg file are: openblas64_, openblas_ilp64 N)rírîrïrðrrrrrötsröc@seZdZdZdS)Ú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.N)rírîrïrðrrrrr÷{sr÷c@seZdZdZdS)Ú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.N)rírîrïrðrrrrrø‚srøc@seZdZdZdS)ÚBlasILP64NotFoundErrorz„ 64-bit Blas libraries not found. Known libraries in numpy/distutils/site.cfg file are: openblas64_, openblas_ilp64 N)rírîrïrðrrrrrù‰srùc@seZdZdZdS)Ú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.N)rírîrïrðrrrrrúsrúc@seZdZdZdS)Ú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.N)rírîrïrðrrrrrû˜srûc@seZdZdZdS)Ú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.N)rírîrïrðrrrrrü srüc@seZdZdZdS)ÚNumericNotFoundErrorzw Numeric (https://www.numpy.org/) module not found. Get it from above location, install it, and retry setup.py.N)rírîrïrðrrrrrý¨srýc@seZdZdZdS)ÚX11NotFoundErrorzX11 libraries not found.N)rírîrïrðrrrrrþ®srþc@seZdZdZdS)Ú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.N)rírîrïrðrrrrrÿ²srÿ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)|r,| ¡}t|f|Ž| ¡}t|f|Ž||j|jj<dS)N)r)r%Úcalc_extra_infoÚ saved_resultsr rí)rr Zlib_infoÚ extra_inforrrÚset_infos   zsystem_info.set_infocsv‡fdd„|Dƒ}t|ƒdkr,|| d¡St|ƒdkr@|dStjdkrPtƒ‚ttjjˆjd d |¡¡d ƒ‚dS) 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 csg|]}ˆj ˆj|¡‘qSr)rÚ has_optionr)r3Úopt)rrrr5"sz1system_info.get_option_single..reTrNz[{}]z, )rÚoptions)ÚsumÚindexrñrðrrr7)rr0Úfoundr)rrÚget_option_singles   zsystem_info.get_option_singlecCs|jj|jkS)N)r rír+)rrrrÚhas_info0szsystem_info.has_infocCsJi}x@dD]8}|j |j|¡}tj |¡}|r ||i}t|f|Žq W|S)z˜ Updates the information in the current information with respect to these flags: extra_compile_args extra_link_args )rr )rrhrrZ NativeParserrVr%)rr rr/Útmprrrr*3s  zsystem_info.calc_extra_infocCs@d}| ¡s¦d}t |jjd¡t|dƒr4| ¡|r€| ¡s€|dkr\tj|j j ddn$|dkrt|  |j j ¡‚n t t |ƒƒ‚| ¡sœt d¡|  ¡n t d¡|j |jj¡}t ¡tjkr6|r6x^| ¡D]R\}}t|ƒ}|d krt|ƒd kr|d d …d |dd …}t d||¡qÖWt d¡t |¡S)zv Return a dictionary with items that are compatible with numpy.distutils.setup keyword arguments. rreú:Ú calc_infoé)Ú stacklevelz NOT AVAILABLEz FOUND:)Úsourcesr iNéxz ... ... ...iˆÿÿÿz %s = %sr)r5rr r ríÚhasattrr8ÚwarningsÚwarnÚ notfounderrorrðr#Úreprr-r+rhZ get_thresholdÚINFOÚitemsrÚlenrkÚdeepcopy)rrëÚflagÚresÚkÚvrrrréCs4      zsystem_info.get_infocCsZ|j ||¡ tj¡}|j}|rtt|ƒrt|d}x|D]}|tjkr6|}Pq6W|d|kspt  d|d|f¡|}|rÆ|tjkrÆtj|}|dkr´t  d|j j d|f¡gStj   |¡rPtj  |¡g|}t|dgƒ}t|ƒdkrÆtj  |¡} tj  | ¡d} | dd …d krÆt  d |jd| d d…f¡| d d…|jd<nv| tj¡} g} x\| D]T}tj  |¡rf|  |¡x4d D],} tj  || ¡} tj  | ¡rˆ|  | ¡qˆWqfW| |}|j |j|¡ tj¡}| |¡g}xT|D]L}t|ƒdkr(tj  |¡s(tjd |ddqò||krò| |¡qòWt d|d |¡¡|S)Néÿÿÿÿrz Setting %s=%sÚNonezDisabled %s: %sz (%s is None)Ú _lib_namesreér/z#Replacing _lib_names[0]==%r with %r)r.r/zSpecified path %s is invalid.r9)r:z ( %s = %s )r7)rrhrVr1r Ú dir_env_varr rgrr r rír6rXÚdirnameÚgetattrrDÚbasenameÚsplitextrLrHrYr7rr$r>r?Údebug)rrrr'Úenv_varZe0Úer4ÚlÚbZdsZds2ÚddÚd1Z default_dirsÚretrrrÚ get_pathsgsd              zsystem_info.get_pathsrcCs| |j|¡S)N)r[r)rrrrrr"žszsystem_info.get_lib_dirsrcCs | |j|¡}|dgkrg}|S)Nr)r[r)rrr6rrrr#¡s z system_info.get_runtime_lib_dirsrcCs| |j|¡S)N)r[r)rrrrrÚget_include_dirs§szsystem_info.get_include_dirsrcCs| |j|¡S)N)r[r)rrrrrÚ get_src_dirsªszsystem_info.get_src_dirscCs^y|j |j|¡}Wn*tk r>|s,gSt|ƒr:|gS|SXdd„dd„| d¡DƒDƒS)NcSsg|] }|r|‘qSrr)r3rWrrrr5¶sz(system_info.get_libs..cSsg|] }| ¡‘qSr)Ústrip)r3Úarrrr5¶srf)rrhrrr rV)rrÚdefaultr,rrrÚget_libs­szsystem_info.get_libsr cCs*t|dƒr|j||jdS| |d¡SdS)NrL)r`r)r=rarL)rrrrrr!¸s zsystem_info.get_librariescCsztƒ}g}|jdkr| d¡tjdkr2| d¡|jrD|tg}n tg|}tjdkrb| d¡tjdkrv| d¡|S) NÚmsvcz.ar*z.libÚcygwinz.dll.arJz.dylib)rÚ compiler_typerYrKrLrÚso_ext)rÚcZ static_extsÚextsrrrÚlibrary_extensions¾s          zsystem_info.library_extensionscCsR| ¡}d}x(|D] }| ||||g¡}|dk rPqW|sNt 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). Nz libraries %s not found in %srf)rhÚ _check_libsrr r7)rÚlib_dirsr,Úopt_libsrgr Úextrrrr$Ðs zsystem_info.check_libscCs4| ¡}| ||||¡}|s0t dd |¡|¡|S)z’If static or shared libraries are available then return their info dictionary. Checks each library for shared or static. z libraries %s not found in %srf)rhrirr r7)rrjr,rkrgr rrrÚ check_libs2âs zsystem_info.check_libs2cCs¸t|ƒs t‚tjdkr ddg}ndg}xŒ|D]„}xF|D]>}| ||||¡}|r6t|dƒrrttj|ddƒ‚Pq6W|r,t |ƒdksŒt‚|dkrœ|d7}|d kr¬||}|Sq,Wd S) Nr*rr/r)rPrez.dll.az.dllz.libF) r rrKrLÚ combine_pathsrQÚ RuntimeErrorÚ _accel_msgrrD)rÚlib_dirr/rgÚ lib_prefixesrlÚprefixr(rrrÚ _find_libðs&      zsystem_info._find_libc Cs^gg}}xJ|D]B}x<|D]4}| |||¡}|r| |¡||krL| |¡PqWqW||fS)N)rtrY) rrjr,rgÚ found_dirsÚ found_libsr/rqZ found_librrrÚ _find_libs s      zsystem_info._find_libsc CsŽt|ƒs|g}| |||¡\}}t|ƒdkr†t|ƒt|ƒkr†| |||¡\}}| |¡x|D]} | |kr^| | ¡q^W||dœ} | SdSdS)zxFind mandatory and optional libs in expected paths. Missing optional libraries are silently forgotten. r)r rN)r rwrDr$rY) rrjr,rkrgrurvZopt_found_dirsZopt_found_libsrqr rrrris   zsystem_info._check_libscGst|ŽS)zjReturn a list of existing paths composed by all combinations of items from the arguments. )rn)rÚargsrrrrn.szsystem_info.combine_paths)r)r)r)r)r)r )"rírîrïrðrNrrr+rìr@r;r=rrr)r-r4r5r*rér[r"r#r\r]rar!rhr$rmrtrwrirnrrrrrºs:    $7        c@seZdZdd„ZdS)rÀcCsXi}tdƒptdƒptdƒ}tdƒ}|rTt|f|Ž|rDt|f|Ž|jf|ŽdSdS)Nr‡r†rˆr)rér%r-)rr rÁrÉrrrr87s   zfft_opt_info.calc_infoN)rírîrïr8rrrrrÀ5srÀc@sTeZdZdZdZeZddgdgdgdœdddgd d gd gdœgZd d „Zdd„Z dS)rÁr…ÚFFTWr‡zfftw3.h)Ú SCIPY_FFTW3_HN)rêr,ÚincludesÚmacrosr†Úrfftwzfftw.hzrfftw.h)Ú SCIPY_FFTW_HNc CsØ| ¡}| ¡}| |jdd¡}| ||d¡}| ||¡}|dk r¦d}x@|D]8}t| ||d¡ƒt|dƒkrPt||gdd}PqPW|r¢t||d d nd}|dk r¾|j f|Žd St   d |d ¡dSdS)z8Returns True on successful version detection, else FalseZ_libsr r,Nrr{)rrer|)Ú define_macrosTz %s not foundrêF) r"r\r4rrar$rDrnr%r-rr ) rZ ver_paramrjÚ incl_dirsr/r,r rFr4rrrÚ calc_ver_infoQs*   zfftw_info.calc_ver_infocCs x|jD]}| |¡rPqWdS)N)Úver_infor)rr(rrrr8ls  zfftw_info.calc_infoN) rírîrïrrNrûr@r‚rr8rrrrrÁCs rÁc@s2eZdZdZdZeZdddgddgdgdœgZd S) rÂr…ryr†r}zfftw.hzrfftw.h)r~N)rêr,r{r|N)rírîrïrrNrûr@r‚rrrrrÂrsrÂc@s.eZdZdZdZeZddgdgdgdœgZdS)rÃr‡ZFFTW3zfftw3.h)rzN)rêr,r{r|N)rírîrïrrNrûr@r‚rrrrrÃ~srÃc@s.eZdZdZdZdddgddgdgdœgZd S) rÄr…ryrˆZdrfftwzdfftw.hzdrfftw.h)Z SCIPY_DFFTW_HN)rêr,r{r|N)rírîrïrrNr‚rrrrrÄŠs rÄc@s.eZdZdZdZdddgddgdgdœgZd S) rÅr…ryr‰Zsrfftwzsfftw.hzsrfftw.h)Z SCIPY_SFFTW_HN)rêr,r{r|N)rírîrïrrNr‚rrrrrÅ“s rÅc@s.eZdZdZdZdddgddgdgd œgZd S) rÆr…ryz fftw threadsZ rfftw_threadsrŠzfftw_threads.hzrfftw_threads.h)ZSCIPY_FFTW_THREADS_HN)rêr,r{r|N)rírîrïrrNr‚rrrrrÆœs rÆc@s.eZdZdZdZdddgddgdgd œgZd S) rÇr…ryz dfftw threadsZdrfftw_threadsr‹zdfftw_threads.hzdrfftw_threads.h)ZSCIPY_DFFTW_THREADS_HN)rêr,r{r|N)rírîrïrrNr‚rrrrrÇ¥s rÇc@s.eZdZdZdZdddgddgdgd œgZd S) rÈr…ryz sfftw threadsZsrfftw_threadsrŒzsfftw_threads.hzsrfftw_threads.h)ZSCIPY_SFFTW_THREADS_HN)rêr,r{r|N)rírîrïrrNr‚rrrrrÈ®s rÈc@s(eZdZdZdZeZdd„Zdd„ZdS)rÉrZDJBFFTcCsHt |||¡}g}x&|D]}| | |dg¡|g¡qWdd„|DƒS)NrcSsg|]}tj |¡r|‘qSr)r1r6rH)r3r4rrrr5Ász)djbfft_info.get_paths..)rr[r$rn)rrrÚpre_dirsr'r4rrrr[¼s  zdjbfft_info.get_pathscCs¾| ¡}| ¡}d}xP|D]H}| |dg¡}|r:d|i}P| |ddtg¡}|rdg|gdœ}PqW|dkrrdSxF|D]>}t| |ddg¡ƒd krxt||gd gd |jf|ŽdSqxWdS) Nzdjbfft.aÚ extra_objectsz libdjbfft.aZ libdjbfftr)r rzfftc8.hz fftfreq.hr9)ZSCIPY_DJBFFT_HN)rr)r"r\rnrerDr%r-)rrjr€r r4r(rrrr8Ãs*    zdjbfft_info.calc_infoN) rírîrïrrNrür@r[r8rrrrrÉ·s rÉc@s2eZdZdZdZdgZdd„Zdd„Zdd „Zd S) r´r{ÚMKLROOTZmkl_rtc CsBtj dd¡}|dk r|Stj dd¡ tj¡}d}tj |¡rzt|dƒ*}x"|D]}| ¡}|rR|  |¡qRWWdQRXg}xZ|D]R}| tj ¡}x@|D]8} |   d¡rštj   |d|  | ¡d…¡}|  |¡PqšWq„Wxb|D]Z}ttj  |dd¡ƒ} | ttj  |d ¡ƒ7} x*| D]"} tj tj  | d ¡¡r| SqWqàWdS) Nr…ZLD_LIBRARY_PATHrz/etc/ld.so.confÚrr{r9Ú*zmkl*r/)r1rgrhrVr r6rXÚopenr^rYr2rOr7r2rrH) rÚmklrootr%Z ld_so_confr^r4Zintel_mkl_dirsr6Z path_atomsÚmr'Zsub_dirrrrÚget_mkl_rootdiràs4           zmkl_info.get_mkl_rootdircCs~| ¡}|dkrt |¡n^ddlm}| ¡r6d}n| ¡rL| ¡rLd}nd}tj|tj   |d|¡gtj   |d¡gddS) Nre)Úcpur"Zintel64Z32r/r.)r;r=) r‹rrZcpuinforŒZ is_ItaniumZis_IntelZis_64bitr1r6r7)rr‰rŒZpltrrrrüs  zmkl_info.__init__cCs~| ¡}| ¡}| dd¡}| ||j¡}| ||¡}|dkrBdSt|ddg|dtjdkr`nt|dgd|j f|ŽdS) NÚmkl_libsr )Z SCIPY_MKL_HN)Ú HAVE_CBLASN)rrr*Zpthread)r ) r"r\r4raÚ_lib_mklrmr%rKrLr-)rrjr€r/rr rrrr8 s   zmkl_info.calc_infoN) rírîrïrrNrr‹rr8rrrrr´Ûs r´c@s eZdZdS)r¹N)rírîrïrrrrr¹ sr¹c@s eZdZdS)rºN)rírîrïrrrrrº$srºc@s\eZdZdZdZddgZejdd…dkr8dgZd gZ n dgZd gZ e Z d d „Z d d„Z dS)r§rqÚATLASÚf77blasÚcblasNéZfreebsdZatlas_rZ alapack_rrc CsPt |||¡}g}x.|D]&}| | |dddddg¡|g¡qWdd„|DƒS)Nzatlas*zATLAS*ZsseZ3dnowZsse2cSsg|]}tj |¡r|‘qSr)r1r6rH)r3r4rrrr5;sz(atlas_info.get_paths..)rr[r$rn)rrrrƒr'r4rrrr[5s  zatlas_info.get_pathscCsÈ| ¡}i}| dd¡}| ||j|j¡}| d|j¡}d}d}d}xh|D]`} | | dgg¡} | | |g¡}|dk r¤| g| | ddg¡} | | |g¡}|dk r¤P|rL|}qLWt  |j ¡|dkrÈ|}|dkrÔdS|  ¡} | || d¡pðdg} | d} | rt j  | ¡} t|| gd d |d <|dk rFt|f|Žt|f|Žnzd|dkr~t|f|Žt|d gd |jf|ŽdSt|f|Žt|dgd t d¡}tj|dd|jf|ŽdS|dd}|dd}d}dg}tjdkrø| d¡xT| ¡D]H}x8|D]0}t j  ||||¡}t j  |¡r |}Pq W|rPqW|dk ržt  |¡d}|dkr–t d¡||df}tj|ddnd|d <tf|Ž\}}t|f|Ž|jf|ŽdS)NÚ atlas_libsr Ú lapack_libsruzatlas*zATLAS*zcblas.hr)rrfÚlanguage)ÚATLAS_WITH_LAPACK_ATLASN)r)ÚATLAS_WITHOUT_LAPACKNa ********************************************************************* Could not find lapack library within the ATLAS installation. ********************************************************************* r9)r:rr/r*ré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Úf77)r"r4rarLÚ _lib_atlasÚ _lib_lapackrmrnrr r r\r1r6rOr%r-ÚtextwrapÚdedentr>r?rKrLrYrhr7ÚexistsÚstatÚget_atlas_version)rrjr r/r”r•rqrZatlas_1r4ruZ lib_dirs2rÚhÚmessageZ lapack_dirZ lapack_nameZ lapack_librrrUrsÚfnÚszÚ atlas_versionÚatlas_extra_inforrrr8=sŒ                   zatlas_info.calc_info)rírîrïrrNrLrKrLr›rœròr@r[r8rrrrr§(sr§c@seZdZddgZdd„ZdS)r©r‘r’c CsÒ| ¡}i}| dd¡}| ||j|j¡}| ||g¡}|dkrFdS| ¡}| ||d¡pbdg}|d}|rŠtj   |¡}t ||gdd|d<dg|d <t f|Ž\}} t |f| Žt |f|Ž|j f|ŽdS) Nr”r zcblas.hr)rrfr–)rŽNr)r"r4rarLr›rmr\rnr1r6rOr%r¡r-) rrjr r/r”rqrr¢r¦r§rrrr8šs(      zatlas_blas_info.calc_infoN)rírîrïrLr8rrrrr©—sr©c@seZdZddgZddgZdS)r¨ÚPTATLASrÚ ptf77blasÚptcblasN)rírîrïrNrLrrrrr¨´sr¨c@seZdZddgZddgZdS)rªr¨rr©rªN)rírîrïrNrLrrrrrª¹srªc@seZdZdgejZdS)r«ruN)rírîrïr§rLrrrrr«¾sr«c@seZdZdgejZdS)r¬ruN)rírîrïr¨rLrrrrr¬Âsr¬c@seZdZdgZeZeZdS)r­ÚsatlasN)rírîrïrLr›rœrrrrr­Æsr­c@seZdZdgZdd„ZdS)r¯r«c CsÌ| ¡}i}| dd¡}| ||j¡}| ||g¡}|dkr@dS| ¡}| ||d¡p\dg}|d}|r„tj  |¡}t ||gdd|d<dg|d <t f|Ž\}} t |f| Žt |f|Ž|j f|ŽdS) NZ atlas_libr zcblas.hr)rrfr–)rŽNr) r"r4rarLrmr\rnr1r6rOr%r¡r-) rrjr r/r”rqrr¢r¦r§rrrr8Ïs(      zatlas_3_10_blas_info.calc_infoN)rírîrïrLr8rrrrr¯Ìsr¯c@s"eZdZddgZdgZeZeZdS)r®r¨rÚtatlasN)rírîrïrNrLr›rœrrrrr®ésr®c@seZdZddgZdgZdS)r°r¨rr¬N)rírîrïrNrLrrrrr°ðsr°c@s eZdZdS)r±N)rírîrïrrrrr±õsr±c@s eZdZdS)r²N)rírîrïrrrrr²ùsr²c@s&eZdZdZdZdgZeZdd„ZdS)rËrZLAPACKcCsT| ¡}| dd¡}| ||j¡}| ||g¡}|dkr.)rr[r$rn)rrrrƒr'r4rrrr[s   zlapack_src_info.get_pathscsž| ¡}d‰x(|D] }tj tj |d¡¡r|‰PqWˆs>dSd}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œ}|jf|ŽdS)Nrzdgesv.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 cSsg|] }d|‘qS)zs%s.fr)r3r^rrrr5osz-lapack_src_info.calc_info..cSsg|] }d|‘qS)zd%s.fr)r3r^rrrr5pscSsg|] }d|‘qS)zc%s.fr)r3r^rrrr5qscSsg|] }d|‘qS)zz%s.fr)r3r^rrrr5rscSsg|] }d|‘qS)z%s.fr)r3r^rrrr5sscsg|]}tj ˆ|¡‘qSr)r1r6r7)r3r^)Úsrc_dirrrr5tsz..ÚINSTALLcsg|]}tj ˆ|d¡‘qS)zlamch.f)r1r6r7)r3r()Úsrc_dir2rrr5wsZsdczcsg|]}tj ˆ|d¡‘qS)zlarfp.f)r1r6r7)r3r()r­rrr5yscs"g|]}tj ˆd|d¡‘qS)Úilazlr.f)r1r6r7)r3r()r­rrr5zscs"g|]}tj ˆd|d¡‘qS)r°zlc.f)r1r6r7)r3r()r­rrr5{scSsg|]}tj |¡r|‘qSr)r1r6rX)r3r^rrrr5srš)r;r–)r]r1r6rXr7rVr-)rrr4ZallauxZlauxZlasrcZsd_lasrcZcz_lasrcZsclauxZdzlauxZslasrcZdlasrcZclasrcZzlasrcZoclasrcZozlasrcr;r r)r­r¯rr8s>      j zlapack_src_info.calc_infoN) rírîrïrrNrõr@r[r8rrrrrÌs 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}|tkr8t|Sttƒƒ}d}i}yn|jt||d\}}|r¶t d|tj ¡r¶|jt|dg|d\}}|s¶t j t   d¡ddt|d d gd Wn–tk rNx0|D](}t d |¡} | rî|  d ¡}|dk rÐPqÐW|dkrtj dd¡}|r2t|dt|ƒfgdnt|dgd|pHd|fSX|srt d|¡} | rr|  d ¡}|dkr®t d|tj ¡r”d}nt d|¡t d|¡n0|dkrÈt|dgdnt|dt|ƒfgd||f} t|<| S)Nr r)r rz!undefined reference to `_gfortranZgfortrana¿ ***************************************************** 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. ***************************************************** r9)r:Úf90)ZATLAS_REQUIRES_GFORTRANN)r–rz#ATLAS_(?P\d+[.]\d+[.]\d+)_ÚversionZ ATLAS_VERSIONZ ATLAS_INFO)r)Ú NO_ATLAS_INFOrJz?.?.?z*ATLAS version (?P\d+[.]\d+[.]\d+)zundefined symbol: ATL_buildinfoz3.2.1_pre3.3.6z Status: %dz Output: %s)r³éþÿÿÿ)rhÚtupleÚ_cached_atlas_versionÚ cmd_configrZ get_outputÚatlas_version_c_textÚreÚsearchÚMr>r?rržr%Ú ExceptionÚgroupr1rgr!rr ) rr rrrfr¦r r ÚorŠÚresultrrrr¡sb              r¡c@sreZdZeZdddddgZdZdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)rÓr{r|rzrqrZNPY_LAPACK_ORDERcCs tdƒ}|r|jf|ŽdSdS)Nr€TF)rér-)rr rrrÚ_calc_info_mklÞs  zlapack_opt_info._calc_info_mklcCs<tdƒ}|r|jf|ŽdStdƒ}|r8|jf|ŽdSdS)Nr}Tr~F)rér-)rr rrrÚ_calc_info_openblasås  z#lapack_opt_info._calc_info_openblascCs tdƒ}|r|jf|ŽdSdS)NrzTF)rér-)rr rrrÚ_calc_info_flameðs  z lapack_opt_info._calc_info_flamecCs|tdƒ}|stdƒ}|s tdƒ}|s,tdƒ}|rx| dg¡}d|ksLd|krh| ¡}|s\dSt|f|Ž|jf|Žd SdS) Nrwrvrrrqr)r—N)r˜NFT)rérhÚ_get_info_lapackr%r-)rr rVrËrrrÚ_calc_info_atlas÷s$   z lapack_opt_info._calc_info_atlascCs tdƒ}|r|jf|ŽdSdS)NÚ accelerateTF)rér-)rr rrrÚ_calc_info_accelerates  z%lapack_opt_info._calc_info_acceleratecCsZtdƒ}|sVtjtjpdddtdƒ}|sDtjtjp8dddiSt|d|fgd|S)Nr˜rrM)r:r‘Ú fblas_src)r )rér>r?rørðrúr%)rr Úinfo_srcrrrÚ_get_info_blasszlapack_opt_info._get_info_blascCsZtdƒ}|sVtjtjpdddtdƒ}|sDtjtjp8dddiSt|d|fgd|S)NrrrM)r:rZ flapack_src)r )rér>r?rôrðrõr%)rr rÈrrrrÃ#sz lapack_opt_info._get_info_lapackcCsB| ¡}|r>| ¡}t|f|Žt|dgd|jf|ŽdSdS)N)r³re)rTF)rÃrÉr%r-)rr Z info_blasrrrÚ_calc_info_lapack.s  z!lapack_opt_info._calc_info_lapackcCst|d |¡ƒƒS)Nz _calc_info_{})rPr)rrêrrrÚ _calc_info8szlapack_opt_info._calc_infocCs|t|j|jƒ\}}t|ƒdkr,td |¡ƒ‚x|D]}| |¡r2dSq2Wd|krxtjt j p\dddtjt j ppddddS)NrzElapack_opt_info user defined LAPACK order has unacceptable values: {}rrr9)r:) rpÚ lapack_orderÚorder_env_var_namerDr#rrËr>r?rôrðrõ)rrÌrorrrrr8;s   zlapack_opt_info.calc_infoN)rírîrïrôr@rÌrÍrÀrÁrÂrÄrÆrÉrÃrÊrËr8rrrrrÓØs    rÓc@seZdZdZdZdd„ZdS)Ú_ilp64_opt_info_mixinNcCsTt| dg¡ƒ}| dd¡}| dd¡}|jd|fkr:dS|jd|fkrLdSt|ƒS)NrÚBLAS_SYMBOL_PREFIXrÚBLAS_SYMBOL_SUFFIXF)ÚdictrhÚ symbol_prefixÚ symbol_suffixÚbool)rr r|rsÚsuffixrrrÚ _check_infoQs  z!_ilp64_opt_info_mixin._check_info)rírîrïrÓrÒrÖrrrrrÎMsrÎc@s$eZdZeZddgZdZdd„ZdS)rÔr‚rƒZNPY_LAPACK_ILP64_ORDERcCs*t|dƒ}| |¡r&|jf|ŽdSdS)NZ_lapackTF)rérÖr-)rrêr rrrrËds    z lapack_ilp64_opt_info._calc_infoN)rírîrïrör@rÌrÍrËrrrrrÔ_srÔc@seZdZdZdZdS)rÕrN)rírîrïrÒrÓrrrrrÕlsrÕc@seZdZdZdZdS)rÖrÚ64_N)rírîrïrÒrÓrrrrrÖrsrÖc@sbeZdZeZdddddgZdZdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„ZdS)r×r{rr|rqrŽZNPY_BLAS_ORDERcCs tdƒ}|r|jf|ŽdSdS)NrTF)rér-)rr rrrrÀ}s  zblas_opt_info._calc_info_mklcCs tdƒ}|r|jf|ŽdSdS)NrTF)rér-)rr rrrÚ_calc_info_blis„s  zblas_opt_info._calc_info_bliscCs tdƒ}|r|jf|ŽdSdS)Nr|TF)rér-)rr rrrrÁ‹s  z!blas_opt_info._calc_info_openblascCsDtdƒ}|stdƒ}|s tdƒ}|s,tdƒ}|r@|jf|ŽdSdS)NryrxrtrsTF)rér-)rr rrrrÄ’s zblas_opt_info._calc_info_atlascCs tdƒ}|r|jf|ŽdSdS)NrÅTF)rér-)rr rrrrÆŸs  z#blas_opt_info._calc_info_acceleratecCsštjtjp dddi}t|dgdtdƒ}|r@t|f|ŽnJtjtjpLdddtdƒ}|sxtjtjplddddSt|d |fgd |jf|Žd S) NrrM)r:)r³re)rrŽr‘FrÇ)r T) r>r?r÷rðr%rérørúr-)rr rŽr‘rrrÚ_calc_info_blas¦s zblas_opt_info._calc_info_blascCst|d |¡ƒƒS)Nz _calc_info_{})rPr)rrêrrrr˼szblas_opt_info._calc_infocCs|t|j|jƒ\}}t|ƒdkr,td |¡ƒ‚x|D]}| |¡r2dSq2Wd|krxtjt j p\dddtjt j ppddddS)NrzAblas_opt_info user defined BLAS order has unacceptable values: {}rŽrr9)r:) rpÚ blas_orderrÍrDr#rrËr>r?rørðrú)rrÚrorŽrrrr8¿s   zblas_opt_info.calc_infoN)rírîrïrør@rÚrÍrÀrØrÁrÄrÆrÙrËr8rrrrr×ws r×c@s$eZdZeZddgZdZdd„ZdS)rØr‚rƒZNPY_BLAS_ILP64_ORDERcCs&t|ƒ}| |¡r"|jf|ŽdSdS)NTF)rérÖr-)rrêr rrrrËÔs   zblas_ilp64_opt_info._calc_infoN)rírîrïrùr@rÚrÍrËrrrrrØÏsrØc@seZdZdZdZdS)rÙrN)rírîrïrÒrÓrrrrrÙÜsrÙc@seZdZdZdZdS)rÚrr×N)rírîrïrÒrÓrrrrrÚásrÚc@seZdZdZdZgZeZdS)Ú cblas_infor’ZCBLASN)rírîrïrrNrLrør@rrrrrÛæsrÛc@s.eZdZdZdZdgZeZdd„Zdd„Z dS)rÊrŽZBLASc CsÒ| ¡}| dd¡}| ||j¡}| ||g¡}|dkr 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; }zsource.cÚwtN)Ú output_dirrr r’rŽza.outrr )r rÚextra_postargs)rÚtempfileÚmkdtemprržr1r6r7rˆÚwriteÚcompiler\Ú distutilsÚ ccompilerÚ CompileErrorÚ LinkErrorÚlink_executablerhÚshutilÚrmtree) rr rfÚtmpdirr rGr^Úobjr,rrrràs2   zblas_info.get_cblas_libsN) rírîrïrrNrLrør@r8ràrrrrrÊîs rÊc@sZeZdZdZdZdgZgZeZe dd„ƒZ e dd„ƒZ dd„Z d d „Z d d „Zd d„ZdS)rµr|ÚOPENBLAScCs*y|j |jd¡Stk r$dSXdS)NrÒr)rrhrr)rrrrrÒ[szopenblas_info.symbol_prefixcCs*y|j |jd¡Stk r$dSXdS)NrÓr)rrhrr)rrrrrÓbszopenblas_info.symbol_suffixc Cs tƒ}| ¡}| dd¡}| ||j¡}| ||g¡}|jdkr~|dkr~ddlm}||d}|rŽ|jdkrŽ|  ||¡}d}n|rŽd }d |d <|dkršdS|  ¡} t |f| Ž|sÀ|  |¡sÀdSd g|d <|j rè|d d|j fg7<|jr|d d|jfg7<|S)NÚ openblas_libsr rbr)Ú new_fcompiler)Z c_compilerZgnu95TFrfr–)rŽNrrÏrÐ)rr"r4rarLr$rdZnumpy.distutils.fcompilerróÚcheck_msvc_gfortran_libsr*r%Ú check_symbolsrÒrÓ) rrfrjr/ròr rór^Zskip_symbol_checkr,rrrrËis4      zopenblas_info._calc_infocCs | ¡}|dk r|jf|ŽdS)N)rËr-)rr rrrr8’szopenblas_info.calc_infoc Csôg}xH|D]@}x:|D].}tj ||d¡}tj |¡r| |¡PqWdSq W|jj}tj t ¡d|¡}tj |¡s€t  |¡|g|gddœ} tj ||d¡} tj ||d¡} t | dƒ} |   d |¡¡WdQRXt | dƒ} WdQRX| S) Nz.aÚbuildrš)rr r–z .fobjectsz .cobjectsrDr) r1r6r7rXrYr ríÚgetcwdrHÚmakedirsrˆræ) rrr Z library_pathsZlibraryZ library_dirÚfullpathrQrïr Z fake_lib_fileZfake_clib_filer^rrrrô—s,         z&openblas_info.check_msvc_gfortran_libsc s(d}tƒ}t ¡}d ‡fdd„ˆjDƒ¡}d ‡fdd„ˆjDƒ¡}t d¡t||d}tj  |d¡}tj  |d ¡} y |d } Wnt k rœg} YnXzxt |d ƒ} |   |¡WdQRX|j |g|d } y$|j| | |d |d| dd}Wntjjk rd}YnXWdt |¡X|S)NFrc3s |]}dˆj|ˆjfVqdS)zvoid %s%s%s();N)rÒrÓ)r3Ú symbol_name)rrrr9½sz.openblas_info.check_symbols..c3s |]}dˆj|ˆjfVqdS)z %s%s%s();N)rÒrÓ)r3rú)rrrr9Ász %(prototypes)s int main(int argc, const char *argv[]) { %(calls)s return 0; })Ú prototypesÚcallszsource.cza.outr rá)râr r)r rrãT)rrärår7Ú_require_symbolsrržrÑr1r6r¼rˆrærçrìrèrérërírî) rr rGrfrïrûrür rGr'Ú extra_argsr^rðr)rrrõ·s8      zopenblas_info.check_symbolsN)rírîrïrrNrLrýrør@ÚpropertyrÒrÓrËr8rôrõrrrrrµTs  ) rµc@s$eZdZdZdZdgZdgZeZdS)r¶r|rñÚzungqr_N) rírîrïrrNrLrýrør@rrrrr¶âs r¶c@seZdZddgZdS)r·r|rN)rírîrïrLrrrrr·ésr·cs6eZdZdZdZdgZddgZeZ‡fdd„Z ‡Z S)r½rƒZOPENBLAS_ILP64Z openblas64Údgemm_Ú cblas_dgemmcs(tƒ ¡}|dk r$|ddg7<|S)Nr)ZHAVE_BLAS_ILP64N)ÚsuperrË)rr )r rrrËós zopenblas_ilp64_info._calc_info) rírîrïrrNrLrýrùr@rËÚ __classcell__rr)r rr½ìs r½cs(eZdZddddgZ‡fdd„Z‡ZS)r¾rrrZLAPACKE_zungqrcs$tƒ ¡}|r |ddg7<|S)Nr)Z HAVE_LAPACKEN)rrË)rr )r rrrËüs z%openblas_ilp64_lapack_info._calc_info)rírîrïrýrËrrr)r rr¾ùs r¾c@s"eZdZdZdZdgZdZdZdS)r»r‚Z OPENBLAS64_r×rN)rírîrïrrNrLrÓrÒrrrrr» s r»c@s eZdZdS)r¼N)rírîrïrrrrr¼ sr¼c@s&eZdZdZdZdgZeZdd„ZdS)r¸rZBLIScCsf| ¡}| dd¡}| ||j¡}| ||g¡}|dkr.rJÚ_PYTHON_HOST_PLATFORMéüÿÿÿÚi386ÚintelÚx86_64rerz0/System/Library/Frameworks/Accelerate.framework/rÅz-msse3z -faltivecz5-I/System/Library/Frameworks/vecLib.framework/Headersz-Wl,-frameworkz-Wl,Acceleratez,/System/Library/Frameworks/vecLib.framework/rz -Wl,vecLib)r³rM)rŽN)rr r) r1rgrhrarLrKrLÚgetenvr r6rŸr$r-)rr rxZ link_argsr rrrr8u sH         zaccelerate_info.calc_infoN)rírîrïrrLrør@r8rrrrrp src@s(eZdZdZdZeZdd„Zdd„ZdS)rÍr‘ZBLAS_SRCcCsHt |||¡}g}x&|D]}| |g| |dg¡¡qWdd„|DƒS)NrŽcSsg|]}tj |¡r|‘qSr)r1r6rH)r3r4rrrr5° sz+blas_src_info.get_paths..)rr[r$rn)rrrrƒr'r4rrrr[« s  zblas_src_info.get_pathscs| ¡}d‰x(|D] }tj tj |d¡¡r|‰PqWˆs>dSd}d}d}‡fdd„||| ¡Dƒ}dd„|Dƒ}|d d œ}|jf|ŽdS) Nrzdaxpy.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 csg|]}tj ˆ|d¡‘qS)z.f)r1r6r7)r3r^)r­rrr5Ò sz+blas_src_info.calc_info..cSsg|]}tj |¡r|‘qSr)r1r6rX)r3r^rrrr5Õ srš)r;r–)r]r1r6rXr7rVr-)rrr4Zblas1Zblas2Zblas3r;r r)r­rr8² s     zblas_src_info.calc_infoN) rírîrïrrNrúr@r[r8rrrrrͦ s rÍc@s*eZdZdZeZdgZdd„Zdd„ZdS)r¿r„ÚX11cCstj|ttddS)N)r;r=)rrÚdefault_x11_lib_dirsÚdefault_x11_include_dirs)rrrrrß szx11_info.__init__cCsœtjdkrdS| ¡}| ¡}| dd¡}| ||j¡}| ||g¡}|dkrRdSd}x|D]}| |d¡r\|}Pq\W|dk rŒt ||gd|j f|ŽdS)N)r*Úx11_libsr zX11/X.h)r) rKrLr"r\r4rarLr$rnr%r-)rrjrr/rr Úinc_dirr4rrrr8ä s"    zx11_info.calc_infoN) rírîrïrrþr@rLrr8rrrrr¿Ú s r¿c@s(eZdZdZdZeZdd„Zdd„ZdS)Ú _numpy_infor”cCsg}yzt|jƒ}g}x*|j tj¡D]}|dkr2P| |¡q$Wy| t|dƒƒ¡Wntk rjYnX| t   d¡¡Wnt k r’YnXt   d¡}| |¡t   d¡}||krÄ| |¡x4t D],}tj  |tj  |¡¡}||krÊ| |¡qÊWtj|g|ddS)Nr/Z get_includer.Ú platinclude)r;r=)Ú __import__Ú modulenamerSrVr1r2rYrPÚAttributeErrorÚ sysconfigÚget_pathÚ ImportErrorr=r6r7rQrr)rrÚmodulersrêZ py_incl_dirÚ py_pincl_dirr4rrrrý s6      z_numpy_info.__init__c Csäyt|jƒ}Wntk r"dSXi}g}xHdD]@}t||dƒ}|dkrLq2|j ¡dt|ƒf|j ¡dfg}Pq2Wt||d| ¡}d}x*|D]"}| |t j   |jd¡¡r”|}Pq”W|dk rÐt||gd|rà|j f|ŽdS)N)Ú __version__r²Z_VERSION)rz arrayobject.h)r) rrrrPÚupperr!r%r\rnr1r6r7r-) rrr r|rIZvrsrrr4rrrr8 s8       z_numpy_info.calc_infoN) rírîrïrrrýr@rr8rrrrrø s !rc@seZdZdZdZdS)rÑr–N)rírîrïrrrrrrrÑ= srÑc@seZdZdZdZdS)rÐr”N)rírîrïrrrrrrrÐB srÐc@seZdZdZdZdS)rÎr’N)rírîrïrrrrrrrÎG srÎc@seZdZdZdd„ZdS)rÒr—c Csbd}t d¡rt d¡df}|ddkrþd}yddl}d}WnÀtk rü}z¢t|ƒ}yddl}d}Wn„tk rê}zft|ƒ}yddl}d}WnHtk rØ}z*t|ƒ}t |¡t |¡t |¡Wdd}~XYnXWdd}~XYnXWdd}~XYnX|d  ¡  ¡|df}|dd kr.)rr[r$rn)rrrrƒr'r4rrrr[ s  zboost_python_info.get_pathsc CsÚ| ¡}d}x.|D]&}tj tj |dddd¡¡r|}PqW|sDdSt d¡g}t d¡}||krl| |¡tj |ddd¡}ttj |d¡ƒ}|ttj |d d¡ƒ7}d |g||d œfg|gd œ}|rÖ|j f|ŽdS) Nrr,ÚpythonrGz module.cppr.rz*.cppr‡Zboost_python_src)rr;)r r) r]r1r6rXr7rrrYrr-) rrr­r4Z py_incl_dirsrZsrcs_dirZbpl_srcsr rrrr8ˆ s.       zboost_python_info.calc_infoN)rírîrïrrNr[r8rrrrrÛ} srÛc@s$eZdZdZdZdd„Zdd„ZdS)rÜršZAGG2cCsHt |||¡}g}x&|D]}| |g| |dg¡¡qWdd„|DƒS)Nzagg2*cSsg|]}tj |¡r|‘qSr)r1r6rH)r3r4rrrr5­ sz'agg2_info.get_paths..)rr[r$rn)rrrrƒr'r4rrrr[¨ s  zagg2_info.get_pathscCsÔ| ¡}d}x*|D]"}tj tj |dd¡¡r|}PqW|s@dStjdkrdttj |dddd¡ƒ}n.ttj |dd¡ƒ}|tj |dddd ¡g7}d |tj |d ¡gd œfgtj |d ¡gd œ}|rÐ|jf|ŽdS)NrrGzagg_affine_matrix.cppr*rLzagg_win32_bmp.cppz*.cpprzagg_platform_support.cppZagg2_srcr.)r;r)r r) r]r1r6rXr7rKrLrr-)rrr­r4Z agg2_srcsr rrrr8¯ s,     zagg2_info.calc_infoN)rírîrïrrNr[r8rrrrrܤ srÜc@sDeZdZdZdZdZdZdZdZdZ dZ dd„Z d d „Z d d „Z dS) Ú_pkg_config_infoNZ PKG_CONFIGz pkg-configrz --modversionz--cflagscCs|jtjkrtj|jS|jS)N)Úconfig_env_varr1rgÚdefault_config_exe)rrrrÚget_config_exeØ s  z_pkg_config_info.get_config_exec CsP|d|jd|}yt |¡}Wnttjfk r>YnXt|ƒ}|SdS)Nú )Úappend_config_exeÚ subprocessÚ check_outputÚOSErrorÚCalledProcessErrorr )rÚ config_exeÚoptionÚcmdr¾rrrÚget_config_outputÝ sz"_pkg_config_info.get_config_outputcCs„t| ¡ƒ}|s(t d||jf¡dSi}g}g}g}g}g}g}| ||j¡} | r | |jj   d¡d  ¡t | ƒf¡|j r | |j d|  dd¡df¡|jrÖ| |d¡} | rÖ| |jd|  dd¡df¡| |d¡} | rPxf|   ¡D]Z} | dd…d kr| | dd…¡qò| dd…d krB| | dd…¡qò| | ¡qòW| ||j¡} | rxœ|   ¡D]} | dd…d kr˜| | dd…¡nd| dd…d kròd | krÚ| dd…  d ¡\} }| | |f¡n| | dd…df¡n | | ¡qnW|rt||d|r&t||d|r8t||d|rJt||d|r\t||d|rnt||d|r€|jf|ŽdS)Nz-File not found: %s. Cannot determine %s info.r-rJz_%sÚ_z --releasez--libsr9z-lz-Lz-Iz-Dú=)r)r )r)r)r )r)r r&rr?rr0Ú version_flagrYr rírVrr!Úversion_macro_namerÚrelease_macro_nameÚ cflags_flagr%r-)rr-r r|r rrr rr²ÚreleaseÚoptsr/ÚnrIrrrr8ç st              z_pkg_config_info.calc_info)rírîrïrr$r%r(r4r5r3r6r&r0r8rrrrr#Î s r#c@s,eZdZdZdZdZdZdZdZdZ dZ d S) rÝr›Z WX_CONFIGz wx-configrZ WX_VERSIONZ WX_RELEASEz --versionz --cxxflagsN) rírîrïrr$r%r(r4r5r3r6rrrrrÝ' srÝc@seZdZdZdZdZdS)rÞrœzgdk-pixbuf-xlib-2.0ZGDK_PIXBUF_XLIB_VERSIONN)rírîrïrr(r4rrrrrÞ2 srÞc@seZdZdZdZdZdS)rßrzgdk-pixbuf-2.0ZGDK_PIXBUF_VERSIONN)rírîrïrr(r4rrrrrß8 srßc@seZdZdZdZdZdS)râr z gdk-x11-2.0ZGDK_X11_VERSIONN)rírîrïrr(r4rrrrrâ> srâc@seZdZdZdZdZdS)rárŸzgdk-2.0Ú GDK_VERSIONN)rírîrïrr(r4rrrrráD srác@seZdZdZdZdZdS)ràržr:N)rírîrïrr(r4rrrrràJ sràc@seZdZdZdZdZdS)rãr¡z gtk+-x11-2.0ZGTK_X11_VERSIONN)rírîrïrr(r4rrrrrãP srãc@seZdZdZdZdZdS)rär¢zgtk+-2.0Z GTK_VERSIONN)rírîrïrr(r4rrrrräV sräc@seZdZdZdZdZdS)rår£Z XFT_VERSIONN)rírîrïrr(r4rrrrrå\ sråc@seZdZdZdZdZdS)rær¤ZFREETYPE2_VERSIONN)rírîrïrr(r4rrrrræb sræc@s"eZdZdZdZdgZdd„ZdS)rèr¦ZAMDc Csª| ¡}| dd¡}| ||j¡}| ||g¡}|dkr¸ ózcombine_paths..rr9Nz (paths: %s)rf) r rYrDrÚmaprr$r1r6r7rnrrS)rxÚkwsr†r_r¿Za0Za1rrrrn© s(   ""rnrer9rM)rfzc++ršr±rfzc++ršr±)rrer9rMc s’g}xf| ¡D]Z\‰}ˆdkr*| |¡qˆˆkr`ˆdkrP‡‡fdd„|Dƒqhˆˆ |¡q|ˆˆ<qW|rŽttdd„|Dƒƒ}|ˆd<dS)Nr–)rrrr rrcs&g|]}|ˆˆkrˆˆ |¡‘qSr)rY)r3Úvv)r4rHrrr5Ñ szdict_append..cSsg|]}t |d¡‘qS)r)Ú language_maprh)r3rVrrrr5× s)rCrYr$Úinv_language_mapÚmax)r4rAÚ languagesrIrVr)r4rHrr%Ç s  r%©NcCsHddl}| 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`Úhelpre)rx)ÚoptparseÚ OptionParserÚ add_optionÚ parse_args)rUrMÚparserr8rxrrrÚ parseCmdLineÜ s  rRc Csddl}|dkrtj}t|ƒ\}}|jr6t tj¡n t tj¡g}x.|D]&}|dd…dkrh|d}|  |¡qLW| }t ƒ  ¡}xb|  ¡D]V\}} |  | ¡s¤qt| tƒr| tkr¸q|sÒ||krÆq|| |¡=| ƒ} d| _|  ¡} qW|rt dd |¡¡dS)NréûÿÿÿÚ_infor9zInfo classes not defined: %srf)ÚinspectrKrUrRrIrÚ set_thresholdÚDEBUGrBrYÚglobalsrkrCÚisclassÚ issubclassrr2Ú verbosityrér r7) rUrUr8rxZ show_onlyr9Úshow_allZ_gdict_rêrfÚconfr†rrrr\ç s8       r\Ú__main__)r)rG)N)ÃrðrKr1r¹rkr>r)rrÚ functoolsrÚ configparserrrrÚdistutils.errorsrÚdistutils.distrrZnumpy.distutilsrÚdistutils.utilr Znumpy.distutils.exec_commandr r Znumpy.distutils.misc_utilr r rZnumpy.distutils.command.configrr·rrrÚdistutils.ccompilerrèräríÚ__all__rLZ_bitsÚ architectureZ platform_bitsrr!r)r6r7Úget_config_varr;r r=rrrr>r<r?r!r@rOZ vcpkg_dirÚ specifierZvcpkg_installedZ vcpkg_rootrBZ conda_dirrŸZglobbed_x11_dirrVZ x11_so_dirr$rˆÚdevnullr6ÚPopenÚPIPEr(r+rÚ communicateÚdecoder^ZtripletÚ returncodersÚinsertrYrerQrpr`rprérìrñ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Ìr¸r¶r¡rÓrÎrÔrÕrÖr×rØrÙrÚrÛrÊrµr¶r·r½r¾r»r¼r¸r³rrÍr¿rrÑrÐrÎrÒrÏrÛrÜr#rÝrÞrßrâráràrãrärårærèrçrnrCrDr%rRr\rírrrrÚšs¢             '           $S V}/       $Eo{Iu X f  L64E% '*Y "