o 6a{@s6ddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZddlTejdd d kZejd d d kZeoSeZGd d d ZddZddZddZddZddZddZddZddZddZd d!Z d(d#d$Z!e"d%krdd&l#m$Z$e$e!d'dSdS))N)join)log)newer)get_config_var)npy_load_module)*NPY_RELAXED_STRIDES_CHECKING10NPY_RELAXED_STRIDES_DEBUGc@s,eZdZddZddZddZddZd S) CallOnceOnlycCsd|_d|_d|_dSN) _check_types_check_ieee_macros_check_complex)selfr2/usr/lib/python3/dist-packages/numpy/core/setup.py__init__%s zCallOnceOnly.__init__cO>|jdurt|i|}t||_|Stt|j}|Sr )r check_typespickledumpscopydeepcopyloadsrakwoutrrrr*  zCallOnceOnly.check_typescOrr )rcheck_ieee_macrosrrrrrrrrrr!2r zCallOnceOnly.check_ieee_macroscOrr )r check_complexrrrrrrrrrr":r zCallOnceOnly.check_complexN)__name__ __module__ __qualname__rrr!r"rrrrr $s  r cCs"tjdkr tjtjdStdS)z return path where libpython* is.win32libsLIBDIR)sysplatformospathrprefixrrrrr pythonlib_dirBs r.cCs tjdkS)zTReturn True if the NPY_NO_SIGNAL symbol must be defined in configuration header.r&)r)r*rrrris_npy_no_signalIs r/cCs dtjvS)zxReturn True if the NPY_NO_SMP symbol must be defined in public header (when SMP support cannot be reliably enabled). NPY_NOSMP)r+environrrrr is_npy_no_smpNs r2cCs\ddlm}|}td|tjtjf|dkr|d|dks%|dkr,|ddSdS)Nr)get_build_architecturez3BUILD_ARCHITECTURE: %r, os.name=%r, sys.platform=%rAMD64DISTUTILS_USE_SDKIntelFORCE_NO_LONG_DOUBLE_FORMATTING)numpy.distutils.misc_utilr3printr+namer)r*append)deflistr3rrrr win32_checksYs   r=csvfddfddfdd}ts#tdtttD]}jt|dd gd r7t|q%|ttD]!}j d d d |gd r_| dd t j j d}t|dfq>tD]]}d}t|dkr}|d|dt|d}} } n1t|dkr|d|d|dgt|df\}} }} n|d|d|dgt|df\}} }} j |d d| |dr| dfqbtD]4\} } | | rt| df| dkrtjdvrrdds|jddtddDqtD]\} } } }| | | |rt| dfqtD]} | r/| dd dd} t| dfq|t|tdS) Ncsj|dddS)NT librariesdeclcall) check_func) func_name)configmathlibsrrrBjsz+check_math_capabilities..check_funccs@tdd|D}j|||d}|rdd|D|S)NcSg|]}|dfqSTr.0frrr ozEcheck_math_capabilities..check_funcs_once..r>cSg|]}t|dfqS fname2defrHrrrrKs)dictcheck_funcs_onceextend) funcs_namer@st)rDrEmoredefsrrrTnsz1check_math_capabilities..check_funcs_oncecs4|s|D]}|rt|dfqdSdS)NrOrr;rQ)rVrJ)rBrTrXrr check_funcsvsz,check_math_capabilities..check_funcszNOne of the required function to build numpy is not available (the list is %s).Python.hmath.hheadersF)r@rAr^._rOrT)r@rA call_argsr^attribute_target_avx512f)r&cygwincSg|]}d|qS)z -ffixed-xmm%sr)rInrrrrKrLz+check_math_capabilities.. ()) MANDATORY_FUNCS SystemErrorstrOPTIONAL_STDFUNCS_MAYBE check_declrQOPTIONAL_STDFUNCSremoveOPTIONAL_HEADERSrBreplacer+r,sepr;OPTIONAL_INTRINSICSlenOPTIONAL_FUNCTION_ATTRIBUTEScheck_gcc_function_attributer)r*check_compiler_gcccheck_gcc_version_at_leastextra_compile_argsrUrange,OPTIONAL_FUNCTION_ATTRIBUTES_WITH_INTRINSICS,check_gcc_function_attribute_with_intrinsicsOPTIONAL_VARIABLE_ATTRIBUTEScheck_gcc_variable_attributeC99_FUNCS_SINGLEC99_FUNCS_EXTENDED)rDextrXrErZrJhtupr^argsmdecfncodeheaderr)rBrTrDrErXrcheck_math_capabilitiesisr   " ,*        rcsgg}ztddkrtjddd|fWSWn ty#Ynwd}|rcd|dtD]}j|dgd }|rN|d t |d fq7fd d }|d|d|d|fS)NrInterixz+Disabling broken complex support. See #1365rb) stacklevelz complex.h)HAVE_COMPLEX_HrO)NPY_USE_C99_COMPLEXrOr]z NPY_HAVE_%srOcsfddtD}tdd|D}j|||ds4|D]}j|dddr1t|dfqdSdd|DdS)Ncsg|]}|qSrrrHprecrrrKrLz5check_complex..check_prec..cSrFrGrrHrrrrKrL)rAr@r?TrOcSrMrNrPrHrrrrKrR)C99_COMPLEX_FUNCSrSrTrBr;rQrU)rflistr@rJrDrEprivrr check_precs  z!check_complex..check_precr_rJl) r+unamewarningswarn Exception check_headerr;C99_COMPLEX_TYPES check_typetype2def)rDrEpubrWtrrrrr"s0      r"csggg}fdd}gd}|D]-}td|}|j|ddgd}|r;|j|ddgdr:dtd|q||q|D]}|j|ddgd}|rT||qCfS) Ncs,td|dtd|dS)Ndecl_%sNPY_%srY)rJrrrr _add_declsz$check_ieee_macros.._add_decl)isnanisinfsignbitisfiniterr[r\r]r)rQrscheck_macro_truer;)rDmacrosr_macrosrJ py_symbolalready_declaredrWrrrr!s.  r!c Csjg}g}dgdgddgdgdggdddgdgdgddgd }|d}|s6d}dtjvr/d }td ||d }|rG|d |d |d}|rX|d|ddD]@} |jdt| dgd}|rz|dt| dt| fqZ|j| || d}|dkr|dt| d|fqZtd| dD]n} |jdt| dgd} |j| || d}|dkr|dt| d|f| s| dks|dt| d|fntd| d| | f} |j| dd|| Dd}|dkr|dt| d|fqtd| dD]6} |j| dgt g|| d }|dkr?|dt| d|f|dt| d|fqtd| |jd!dgdr|jd!dgt g|d!d }|dkr||dtd!d|f|dtd!d|fntdd!|jd"|d"d}|dkr|dtd"d|fntdd"|jd#dgdst d$||fS)%Nrbrhrg)rk rg) shortintlongfloatdouble long double Py_intptr_t PY_LONG_LONG long longoff_tr[python__pypy__pypyzICannot compile 'Python.h'. Perhaps you need to install {0}-dev|{0}-devel.zendian.h) HAVE_ENDIAN_HrO)NPY_HAVE_ENDIAN_HrOz sys/endian.h)HAVE_SYS_ENDIAN_HrO)NPY_HAVE_SYS_ENDIAN_HrO)rrrz SIZEOF_%sr]z NPY_SIZEOF_%s)expectedrz%dzChecking sizeof (%s) failed !)rrrrzstruct {%s __x; %s __y;}cSsg|]}d|qS)rbr)rIxrrrrKIrLzcheck_types..zNPY_SIZEOF_COMPLEX_%s)rr)r^ library_dirsrrrCHAR_BITzCConfig wo CHAR_BIT is not supported, please contact the maintainers) rr)builtin_module_namesrpformatr;rssym2defcheck_type_sizer. RuntimeError) config_cmdr build_dirprivate_definespublic_definesrresultrrestyper complex_defrrrrs                       rcCsbg}gdgdgg}tjd}|r|d|d|D]}|jd|dddr,|}|Sqtd ) NrcpmlMATHLIBr,expTr>zKmath library missing; rerun setup.py after setting the MATHLIB env variable)r+r1getinsertsplitrBEnvironmentError)rrEmathlibs_choicesmathlibr'rrr check_mathlibts rcCsd}||dr |SdS)zSReturn the define value to use for NPY_VISIBILITY_HIDDEN (may be empty string).z%__attribute__((visibility("hidden")))hidemer_)r|)rDhiderrrvisibility_defines rr_cs ddlm}m}ddlm}m}m}|d||j}t|dt r*t dt t ttd|jd}td |d d d tfd d} fdd} fdd} | d} | d} t|ddt|dt|d tddtddtddtddtdddgdgtjdddkr̈d gnd!gd"gd#gjd$tddd%td$d&d'td(g}td)tjjfd*gfd+d,}tddd-tddd.tddd/tddd0tddd1g}td2o1t d3}j!d||gd4g|rAd5gngd6d7"d8d9"d:d9j#d;tddd<tddd=tddd>gtddd?tddd@tdddAgdgdBtdddCtdddDtdddEtdddFtddd?tddd@tdddGtdddHtdddItdddAtdddJtdddKtdddLtdddMtdddNtdddOtdddPtdddQtdddRdSg}tdddTtddd=tddd>tdddUtdddLtdddVtdddWtdddXtdddYg }tj$%dZd[d[kr|d\d]}n|d^d}|o-d_|%d`gv}|rC|}|tdddatdddbgni}gtdddctddddtdddetdddftdddgtdddhtddditdddjtdddktdddltdddmtdddntdddotdddptdddqtdddrtdddstdddttdddutdddvtdddwtdddxtdddytdddztddd{tddd|tddd}tddd~tdddtdddtdddtdddtdddtdddtdddtdddtdddtd$d&ddtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&dtd$d&d|}gtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddƒtdddÃtdddătdddŃtdddƃtdddǃtdddȃtdddɃtdddʃtddd˃tddd̃tddd̓tddd΃tdddσtdddЃtdddуtddd҃tdddӃtdddԃtdddՃtdddփ}fdd؄}tdddكtdddڃtdddۃtddd܃tddd݃tdddރtddd߃tdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddg}td$d&dtd$d&dtdddktdddtdddLtddd܃tdddtdg }j#d|||| | | tdtd|| g||||dg|dj#dtdddtdddtdddYgdj#dtdddgdj#dtdddgdj#dtdddgdj#dtdddYtdddtdddtdddtdddgtdddQtdddRdStdddtdddtdddtdddtdddtdddtdddg d&dd d 'd (S( Nr) Configurationdot_join)get_info blas_opt_infolapack_opt_infocorecode_generatorserrorzgenerate_umath.pygenerate_umathrar`).pyUrOz include/numpycs.t|d}tj|}tj|st|tt|r=}t d| |||\}}t |}| dd|ft||||||d|||dtrb| dtjdksltjdkrpt|| d |f|}tr| d n| d tr| d n| d t|} | d| dft|r| d| d| d| dt|dJ} |D]}t|tr| d|q| d|d|dfq| d|dkr| dn| d|| d| t!"dWdn 1swYt d|t|} t | #Wdn 1s2wYt dn:g}t|+} | D] } d} | $| re| t%| d&} | re|| 'dqFWdn 1srwYt(|d r|j)|tj|}|j*vrj* ||S)!Nzconfig.h Generating %srrr__NPY_PRIVATE_NO_SIGNALr&nt NPY_RESTRICTrrO)rrr rO)r rzHAVE_LDOUBLE_%srO$NPY_DO_NOT_OPTIMIZE_LONG_right_shift%NPY_DO_NOT_OPTIMIZE_ULONG_right_shift(NPY_DO_NOT_OPTIMIZE_LONGLONG_right_shift)NPY_DO_NOT_OPTIMIZE_ULONGLONG_right_shiftw #define %s #define %s %s z#ifndef __cplusplus inlinez/* #undef inline */ z#define inline %s z#endif z #ifndef _NPY_NPY_CONFIG_H_ #error config.h should never be included directly, include npy_config.h instead #endif File: %sEOFz#define MATHLIBr?)+rr+r,dirnameexistsmakedirsr__file__get_config_cmdrinforrr;rrUr!r"r/r)r*r:r=check_restrict check_inlinerr check_long_double_representation-check_for_right_shift_internal_compiler_erroropen isinstancerqwritetextwrapdedentread startswithrzstriprhasattrr?numpy_include_dirs)rrtargetdrrXignoredrErreptarget_flinesvalueincl_dircocacherD header_dirrrgenerate_config_hs                            z(configuration..generate_config_hc s,t|ddt|ddt|d}tj|}tj|s)t|tt|r  }t d| |||\}}t rJ|dtrS|dn|dt|}||d |||d trx|d tr|d |jd d gdr|dt|}|d|f|ddtf|ddtft|d/} |D]}t|tr| d|q| d|d|d fq| tdWdn1swYt d|t|} t | Wdn 1swYt d!|f|S)z@Depends on config.h: generate_config_h has to be called before !srccommonnpymathz_numpyconfig.hr) NPY_NO_SIGNALrO) NPY_NO_SMPrO)r%rrOrrPRIdPTRz inttypes.hr])NPY_USE_C99_FORMATSrONPY_VISIBILITY_HIDDENNPY_ABI_VERSIONz0x%.8XNPY_API_VERSIONrrrrz #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS 1 #endif Nrr)"add_include_dirsrr+r,rrrrrrrrrr/r;r2rrUr!r"rr rsr C_ABI_VERSION C_API_VERSIONr r rqr r rradd_data_files) rrrrrrrXrEhidden_visibilityrrrrgenerate_numpyconfig_hsT                z-configuration..generate_numpyconfig_hcsfdd}|S)Ncs|td}tjdzt}td||tj|\}}}Wtjd=ntjd=w |f|f|fS)Nrrz executing %s) rr)r,r __import__rr generate_apir+r.)rrscriptrh_filec_filedoc_file) codegen_dirrDr module_namerrr2Zs  z>configuration..generate_api_func..generate_apir)r8r2)r7rDr)r8rgenerate_api_funcYs z(configuration..generate_api_funcgenerate_numpy_apigenerate_ufunc_apir!r"r# multiarrayumathnpysort_simd)NPY_INTERNAL_BUILDr )HAVE_NPY_CONFIG_Hr rcaix) _LARGE_FILESN)_FILE_OFFSET_BITS64)_LARGEFILE_SOURCEr )_LARGEFILE64_SOURCEr includez _signbit.cnumpyz *object.hz genapi.pyrx)pkgnamez numpy.corec s}dD]8\}}}|dk}|r|j}||_|j||d}|s9d|j_|j||dtd|d||r>||_qt|}ddd |D} dd d |D} | d <| d <dS) N))czint main(void) { return 0;}r_)c++z;int main(void){ auto x = 0.0; return static_cast(x); }zFnote: A compiler with support for C++11 language features is required.rL)langTz'Broken toolchain: cannot link a simple z program.  cSri)z-l%srrIrrrrrKrLz;configuration..get_mathlib_info..cSri)z%s.librrOrrrrKrL posix_mathlib msvc_mathlib) rcompiler cxx_compilertry_linkverboserupperrr) rrrM test_codenoteis_cppbk_crWmlibs posix_mlib msvc_mlib)rD subst_dictrrget_mathlib_infos.    z'configuration..get_mathlib_infoznpy_math_internal.h.srcz npy_math.cz ieee754.c.srcznpy_math_complex.c.srcz halffloat.cWindowsMSlibz/GL-) include_dirsextra_compiler_args)sources install_dir build_infoznpymath.ini.inzlib/npy-pkg-configz mlib.ini.in_multiarray_testsz_multiarray_tests.c.srcz mem_overlap.cznpy_argparse.cz mem_overlap.hznpy_argparse.hznpy_extint128.h)redependsr?zarray_assign.hzbinop_override.hz cblasfuncs.hzlowlevel_strided_loops.hz npy_cblas.hz npy_config.hz npy_ctypes.hz npy_import.hznpy_longdouble.hztempl_common.h.srcz ucsnarrow.hzufunc_override.hz umathmodule.hz numpyos.hznpy_cpu_dispatch.hsimdzsimd.hzarray_assign.cznpy_longdouble.cz ucsnarrow.czufunc_override.cz numpyos.cznpy_cpu_features.c.srcNPY_USE_BLAS_ILP64r blas_ilp64_optrbblas_opt) HAVE_CBLASN define_macrosz cblasfuncs.czpython_xerbla.czabstractdtypes.hz arrayobject.hz arraytypes.hzarrayfunction_override.hzarray_coercion.hzarray_method.hz npy_buffer.hz calculation.hzcommon.hzcommon_dtype.hzconvert_datatype.hz convert.hzconversion_utils.hzctors.hz descriptor.hz dtypemeta.hzdtype_transfer.hz dragon4.hzeinsum_debug.hzeinsum_sumprod.hzgetset.hz hashdescr.hz iterators.hzlegacy_dtype_implementation.hz mapping.hz methods.hzmultiarraymodule.hz nditer_impl.hznumber.hz refcount.hz scalartypes.hz sequence.hzshape.hz strfuncs.hz typeinfo.hz usertypes.hzvdot.hz_neighborhood_iterator_imp.hz npy_endian.hzarrayscalars.hz noprefix.hznpy_interrupt.hznpy_3kcompat.hz npy_math.hz halffloat.hz npy_common.hznpy_os.hzutils.hzndarrayobject.hz npy_cpu.hz numpyconfig.hzndarraytypes.hznpy_1_7_deprecated_api.hzabstractdtypes.czalloc.cz arrayobject.czarraytypes.c.srczarray_coercion.czarray_method.czarray_assign_scalar.czarray_assign_array.czarrayfunction_override.czbuffer.cz calculation.czcompiled_base.czcommon.czcommon_dtype.cz convert.czconvert_datatype.czconversion_utils.czctors.cz datetime.czdatetime_strings.czdatetime_busday.czdatetime_busdaycal.cz descriptor.cz dtypemeta.cz dragon4.czdtype_transfer.cz einsum.c.srczeinsum_sumprod.c.srcz flagsobject.czgetset.cz hashdescr.czitem_selection.cz iterators.czlegacy_dtype_implementation.czlowlevel_strided_loops.c.srcz mapping.cz methods.czmultiarraymodule.cznditer_templ.c.srcz nditer_api.cznditer_constr.cznditer_pywrap.cznumber.cz refcount.cz sequence.czshape.cz scalarapi.czscalartypes.c.srcz strfuncs.cz temp_elide.cz typeinfo.cz usertypes.czvdot.cznpy_sort.h.srczquicksort.c.srczmergesort.c.srcz timsort.c.srczheapsort.c.srczradixsort.c.srcznpy_partition.h.srczselection.c.srcznpy_binsearch.h.srczbinsearch.c.srccst|d}tj|}tj|st|}t||r?t|d}| j j WdgS1s:wYgS)Nz__umath_generated.cr) rr+r,rrrrr r  make_codedefdictr)rrrdirr3rJ)rgenerate_umath_pyrrrgenerate_umath_cs        z'configuration..generate_umath_cz umathmodule.cz reduction.cz funcs.inc.srcz simd.inc.srcz loops.h.srczloops_utils.h.srcz loops.c.srczloops_unary_fp.dispatch.c.srczloops_arithm_fp.dispatch.c.srczloops_arithmetic.dispatch.c.srcz"loops_trigonometric.dispatch.c.srcz!loops_exponent_log.dispatch.c.srcz matmul.h.srcz matmul.c.srcz clip.h.srcz clip.c.srczufunc_object.czextobj.czscalarmath.c.srczufunc_type_resolution.cz override.cz override.hzgenerate_ufunc_api.py_multiarray_umathzgenerate_numpy_api.pyz*.py)rerir? extra_info _umath_testsz_umath_tests.c.srcz_umath_tests.dispatch.c)re_rational_testsz_rational_tests.c.src_struct_ufunc_testsz_struct_ufunc_tests.c.src_operand_flag_testsz_operand_flag_tests.c.srcz_simd.cz_simd_inc.h.srcz_simd_data.inc.srcz_simd.dispatch.c.srcz_simd.hz _simd_arg.incz_simd_convert.incz_simd_easyintrin.incz_simd_vector.inc)reritestsz tests/dataztests/examplesz*.pyi))r8rrnumpy.distutils.system_inforrr local_pathr is_releasedr simplefilterMismatchCAPIWarningcheck_api_versionr-r:rrr r+ add_data_diradd_define_macrosr)r*rrUpathsrSr+r,rxrpython_compileradd_installed_libraryadd_npy_pkg_config add_extensionr1radd_subpackager.make_svn_version_py)parent_packagetop_pathrrrrr local_dirrjr r0r9r:r;depsr_npymath_sourcesis_msvc common_deps common_src blas_info have_blasrvmultiarray_depsmultiarray_srcrt umath_src umath_depsr)rr7rDrrsrr^r configurationsx      kG          ,                                                                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 69;                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?F                                                     r__main__)setup)r)r_N)%r+r)rrrr*r os.pathrnumpy.distutilsrdistutils.dep_utilr sysconfigr numpy.compatr setup_commonr1rrr r r.r/r2r=rr"r!rrrrr#numpy.distutils.corerrrrrsJ       X)%e