U C^U@sVddlmZmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZddlmZddlmZmZddlmZdd lTejd d d kZejd d d kZeoeZGdddeZddZddZddZ ddZ!ddZ"ddZ#ddZ$ddZ%d d!Z&d"d#Z'd*d%d&Z(e)d'krRdd(l*m+Z+e+e(d)dS)+)divisionprint_functionN)join)log)newer)get_config_var)uses_accelerate_framework get_sgemv_fix)npy_load_module)*NPY_RELAXED_STRIDES_CHECKING10NPY_RELAXED_STRIDES_DEBUGc@s,eZdZddZddZddZddZd S) CallOnceOnlycCsd|_d|_d|_dSN) _check_types_check_ieee_macros_check_complex)selfr3/tmp/pip-install-6_kvzl1k/numpy/numpy/core/setup.py__init__*szCallOnceOnly.__init__cOs8|jdkr"t||}t||_ntt|j}|Sr)r check_typespickledumpscopydeepcopyloadsrakwoutrrrr/s   zCallOnceOnly.check_typescOs8|jdkr"t||}t||_ntt|j}|Sr)rcheck_ieee_macrosrrrrrrrrrr#7s   zCallOnceOnly.check_ieee_macroscOs8|jdkr"t||}t||_ntt|j}|Sr)r check_complexrrrrrrrrrr$?s   zCallOnceOnly.check_complexN)__name__ __module__ __qualname__rrr#r$rrrrr)srcCs&tjdkrtjtjdStdSdS)z return path where libpython* is.win32libsLIBDIRN)sysplatformospathrprefixrrrrr pythonlib_dirGs r0cCs tjdkS)zTReturn True if the NPY_NO_SIGNAL symbol must be defined in configuration header.r()r+r,rrrris_npy_no_signalNsr1cCs dtjkS)zxReturn True if the NPY_NO_SMP symbol must be defined in public header (when SMP support cannot be reliably enabled).Z NPY_NOSMP)r-environrrrr is_npy_no_smpSs r3cCsXddlm}|}td|tjtjf|dkr:|d|dksJ|dkrT|ddS)Nr)get_build_architecturez3BUILD_ARCHITECTURE: %r, os.name=%r, sys.platform=%rZAMD64ZDISTUTILS_USE_SDKZIntelZFORCE_NO_LONG_DOUBLE_FORMATTING)numpy.distutils.misc_utilr4printr-namer+r,append)Zdeflistr4r rrr win32_checks^s   r9cs<fddfddfdd}tsFtdtttD]$}jt|dd gd rJt|qJ|ttD]B}j d d d |gd r|| dd t j j d}t|dfq|tD]}d}t|dkr|d|dt|d}}} ndt|dkr4|d|d|dgt|df\}}}} n*|d|d|dgt|df\}}}} j |d d||drĈ| dfqtD]*\} } | | rt| dfqtD]2\} } } } | | | | rt| dfqtD]8} | r| dd dd} t| dfq|t|tdS)Ncsj|dddS)NT librariesdeclcall) check_func) func_name)configmathlibsrrr>osz+check_math_capabilities..check_funccs@tdd|D}j|||d}|r<dd|D|S)NcSsg|] }|dfqSTr.0frrr tszEcheck_math_capabilities..check_funcs_once..r:cSsg|]}t|dfqS fname2defrCrrrrFxs)dictcheck_funcs_onceextend) funcs_namer<st)r@rAmoredefsrrrLssz1check_math_capabilities..check_funcs_oncecs8|s0|D]}|r t|dfq dSdSdS)NrHrr8rJ)rNrE)r>rLrPrr check_funcs{s z,check_math_capabilities..check_funcszNOne of the required function to build numpy is not available (the list is %s).Python.hmath.hheadersF)r<r=rV._rHrT)r<r=Z call_argsrV())ZMANDATORY_FUNCS SystemErrorstrZOPTIONAL_STDFUNCS_MAYBE check_declrJZOPTIONAL_STDFUNCSremoveZOPTIONAL_HEADERSr>replacer-r.sepr8ZOPTIONAL_INTRINSICSlenZOPTIONAL_FUNCTION_ATTRIBUTEScheck_gcc_function_attributeZ,OPTIONAL_FUNCTION_ATTRIBUTES_WITH_INTRINSICSZ,check_gcc_function_attribute_with_intrinsicsZOPTIONAL_VARIABLE_ATTRIBUTESZcheck_gcc_variable_attributeZC99_FUNCS_SINGLEZC99_FUNCS_EXTENDED)r@rPrArRrEhtuprVargsmdecfncodeheaderr)r>rLr@rArPrcheck_math_capabilitiesnsT    ",*    rncsgg}z,tddkr2tjddd|fWSWntk rHYnXd}|rȈd|dtD].}j|dgd }|rp|d t |d fqpfd d }|d|d|d|fS)NrZInterixz+Disabling broken complex support. See #1365rZ) stacklevelz complex.h)ZHAVE_COMPLEX_HrH)ZNPY_USE_C99_COMPLEXrHrUz NPY_HAVE_%srHcs~fddtD}tdd|D}j|||dsf|D](}j|dddr:t|dfq:ndd|DdS)Ncsg|] }|qSrrrCprecrrrFsz5check_complex..check_prec..cSsg|] }|dfqSrBrrCrrrrFs)r=r<r;TrHcSsg|]}t|dfqSrGrIrCrrrrFs)ZC99_COMPLEX_FUNCSrKrLr>r8rJrM)rqflistr<rEr@rAprivrpr check_precs  z!check_complex..check_precrWrEl) r-unamewarningswarn Exception check_headerr8ZC99_COMPLEX_TYPESZ check_typeZtype2def)r@rApubrOtrurrsrr$s*    r$csggg}fdd}ddddg}|D]Z}td|}|j|dd gd }|rz|j|dd gd rd td|q*||q*|D]"}|j|dd gd }|r||qfS) Ncs,td|dtd|dS)Ndecl_%sNPY_%srQ)rErtr|rr _add_declsz$check_ieee_macros.._add_declisnanisinfZsignbitisfiniter~rSrTrUr)rJr`Zcheck_macro_truer8)r@macrosrZ_macrosrEZ py_symbolalready_declaredrOrrrr#s*    r#c Cs|g}g}dgdgddgdgdgdddgddgdgdgddgd }|d}|snd}d tjkr`d }td ||d }|r|d |d|d}|r|d|ddD]} |jdt| dgd}|r|dt| dt| fq|j| || d}|dkr.|dt| d|fqtd| qdD]} |jdt| dgd} |j| || d}|dkr|dt| d|f| s| dks|dt| d|fn td| d| | f} |j| dd|| Dd}|dkr|dt| d|fn td| q@d D]n} |j| dgt g|| d!}|dkr|dt| d|f|dt| d|fn td| q,|jd"dgdrZ|jd"dgt g|d"d!}|dkr |dtd"d|f|dtd"d|fn tdd"|jd#|d#d}|dkrN|dtd#d|fn tdd#|jd$dgdstt d%||fS)&NrZ ) shortintlongfloatdouble long double Py_intptr_t PY_LONG_LONG long longoff_trSpythonZ__pypy__ZpypyzICannot compile 'Python.h'. Perhaps you need to install {0}-dev|{0}-devel.zendian.h) HAVE_ENDIAN_HrH)ZNPY_HAVE_ENDIAN_HrHz sys/endian.h)HAVE_SYS_ENDIAN_HrH)ZNPY_HAVE_SYS_ENDIAN_HrH)rrrz SIZEOF_%srUz NPY_SIZEOF_%s)expectedrz%dzChecking sizeof (%s) failed !)rrrrzstruct {%s __x; %s __y;}cSsg|] }d|qS)rZr)rDxrrrrFFszcheck_types..zNPY_SIZEOF_COMPLEX_%s)rr)rV library_dirsrrrZCHAR_BITzCConfig wo CHAR_BIT is not supported, please contact the maintainers) r{r+builtin_module_namesr^formatr8r`Zsym2defZcheck_type_sizer0 RuntimeError) config_cmdext build_dirZprivate_definesZpublic_definesrresultrrestyperZ complex_defrrrr s                     rcCsdg}gdgdgg}tjd}|r4|d|d|D]}|jd|dddr8|}q`q8td |S) NriZcpmlMATHLIBr,expTr:zKmath library missing; rerun setup.py after setting the MATHLIB env variable)r-r2getinsertsplitr>EnvironmentError)rrAZmathlibs_choicesZmathlibr)rrr check_mathlibqs rcCsd}||dr|SdSdS)zSReturn the define value to use for NPY_VISIBILITY_HIDDEN (may be empty string).z%__attribute__((visibility("hidden")))ZhidemerWN)re)r@Zhiderrrvisibility_defines rrWc1s0 ddlm}m}ddlm}m}|d||j}t|dtrPt dt t t td|jd}td |d d d tfd d}fdd} fdd} | d} | d} t|ddt|dt|d tddtddtddtdddgdgtjdddkrdgn$d gd!gd"gjd#tddd$td#d%d&td'g} td(tjjfd)gfd*d+}tddd,tddd-tddd.tddd/tddd0g}td1oPtd2}j d||gd3g|rpd4gngd5d6!d7d8!d9d8tddd:tddd;tddd<tddd=tddd>tddd?tddd@tdddAtdddBtdddCg }j"d|gdDj#dEtdddFtdddGgtdddHtdddIgdgdJtdddKtdddLtdddMtdddNtdddHtdddOtdddPtdddQtdddItdddRtdddStdddTtdddUtdddVtdddWtdddXg}tdddYtdddGtdddZtdddTtddd[tddd\tddd]g}tj$%d^d_d_krZ|d`da}n |dbd}|oxdc|%ddgk}|r|}|tdddetdddfgt&|r|t'ni}tdddgtdddhtddditdddjtdddktdddltdddmtdddntdddotdddptdddqtdddrtdddstdddttdddutdddvtdddwtdddxtdddytdddztddd{tddd|tddd}tddd~tdddtdddtdddtdddtd#d%dgtd#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%dg-||}tdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddg.}fdd„}tdddÃtdddătdddŃtdddƃtdddǃtdddȃtdddɃtdddʃtddd˃tddd̃tddd̓tddd΃tdddσtdddЃtdddуtddd҃g}td#d%dtd#d%dtdddltdddztdddTtdddƃtdddӃtdԃg }j#d|||||| | tdփtd׃|| g| |||ddg|d؍j#dtdddڃgdۍj#dtddd݃gdۍj#dtddd߃gdۍj#dtdddgdۍdd(S)Nr) Configurationdot_join)get_info dict_appendcoreZcode_generatorserrorzgenerate_umath.pygenerate_umathrYrX).pyUrHz include/numpyc st|d}tj|}tj|s.t|tt|rZ}t d| |||\}}t |}| dd|ft|||||d|||dtr| dtjdkstjdkrt|| d |f|}tr| d tr| d t|} | d | d ft|rd| d| d| d| dtjddkr~| dt|d} |D]<}t|t r| !d|n| !d|d|d fq| !d|dkr| !dn| !d|| !d| !t"#dW5QRXt d|t|} t | $W5QRXt dn^g}t|L} | D]@} d} | %| rl| t&| d'} | rl|| (dqlW5QRXt)|d r|j*|tj|}|j+krj+ ||S)!Nzconfig.h Generating %srrrZ__NPY_PRIVATE_NO_SIGNALr(ntZ NPY_RESTRICTr rHrrHzHAVE_LDOUBLE_%srHZ$NPY_DO_NOT_OPTIMIZE_LONG_right_shiftZ%NPY_DO_NOT_OPTIMIZE_ULONG_right_shiftZ(NPY_DO_NOT_OPTIMIZE_LONGLONG_right_shiftZ)NPY_DO_NOT_OPTIMIZE_ULONGLONG_right_shiftr[)ZNPY_PY3KrHw #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_cmdrinforrr8rnrMr#r$r1r+r,r7r9Zcheck_restrictZ check_inliner rZ check_long_double_representationZ-check_for_right_shift_internal_compiler_error version_infoopen isinstancer_writetextwrapdedentread startswithrdstriprhasattrr;numpy_include_dirs)rrtargetdrrPignoredrArreptarget_flinesvalueZincl_dircocacher@ header_dirrrgenerate_config_hsz                               z(configuration..generate_config_hc st|ddt|ddt|d}tj|}tj|sRt|tt|r }t d| |||\}}t r|dtr|dn |dt|}||d |||d tr|d tr|d |jd d gdr|dt|}|d|f|ddtf|ddtft|dX} |D]<}t|tr| d|n| d|d|d fqd| tdW5QRXt d|t|} t | W5QRXt d!|f|S)z@Depends on config.h: generate_config_h has to be called before !srccommonnpymathz_numpyconfig.hr)Z NPY_NO_SIGNALrH) NPY_NO_SMPrH)rrrHrrZPRIdPTRz inttypes.hrU)ZNPY_USE_C99_FORMATSrHZNPY_VISIBILITY_HIDDENZNPY_ABI_VERSIONz0x%.8XZNPY_API_VERSIONrrrrz #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS 1 #endif rr)"add_include_dirsrr-r.rrrrrrrrrr1r8r3rrMr#r$r rr`rZ C_ABI_VERSION C_API_VERSIONrrr_rrrradd_data_files) rrrrrrrPrAZhidden_visibilityrrrrgenerate_numpyconfig_hsP                z-configuration..generate_numpyconfig_hcsfdd}|S)Ncsttd}tjdz2t}td||tj|\}}}W5tjd=X |f|f|fS)Nrrz executing %s) rr+r.r __import__rr generate_apir-r)rrscriptriZh_fileZc_fileZdoc_file) codegen_dirr@r module_namerrrVs   z>configuration..generate_api_func..generate_apir)rr)rr@r)rrgenerate_api_funcUs z(configuration..generate_api_funcgenerate_numpy_apigenerate_ufunc_apirrrZ multiarrayZumathZnpysort)ZNPY_INTERNAL_BUILDr )ZHAVE_NPY_CONFIG_Hr r[aix)Z _LARGE_FILESN)Z_FILE_OFFSET_BITSZ64)Z_LARGEFILE_SOURCEr )Z_LARGEFILE64_SOURCEr includez _signbit.cZnumpyz *object.hz genapi.pyrc)pkgnamez numpy.corecst}|d}|s0d|j_|dtdt|}ddd|D}ddd|D}|d<|d <dS) Nzint main(void) { return 0;}Tz0Broken toolchain: cannot link a simple C program cSsg|] }d|qS)z-l%srrDrvrrrrFsz;configuration..get_mathlib_info..cSsg|] }d|qS)z%s.librrrrrrFsZ posix_mathlibZ msvc_mathlib)rZtry_linkcompilerverboserrr)rhrrOZmlibsZ posix_mlibZ msvc_mlib)r@ subst_dictrrget_mathlib_infos  z'configuration..get_mathlib_infoznpy_math_internal.h.srcz npy_math.cz ieee754.c.srcznpy_math_complex.c.srcz halffloat.cWindowsZMSlibz/GL-) include_dirsZextra_compiler_args)sourcesZ install_dirZ build_infoznpymath.ini.inzlib/npy-pkg-configz mlib.ini.inznpy_sort.h.srczquicksort.c.srczmergesort.c.srcz timsort.c.srczheapsort.c.srczradixsort.c.srcznpy_partition.h.srczselection.c.srcznpy_binsearch.h.srczbinsearch.c.src)rrZ_multiarray_testsz_multiarray_tests.c.srcz mem_overlap.cz mem_overlap.hznpy_extint128.h)rdependsr;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.hzarray_assign.cznpy_longdouble.cz ucsnarrow.czufunc_override.cz numpyos.cZNPY_USE_BLAS_ILP64rZblas_ilp64_optrZZblas_opt)Z HAVE_CBLASN define_macrosz cblasfuncs.czpython_xerbla.cz arrayobject.hz arraytypes.hzarrayfunction_override.hz npy_buffer.hz calculation.hzcommon.hzconvert_datatype.hz convert.hzconversion_utils.hzctors.hz descriptor.hz dragon4.hzgetset.hz hashdescr.hz iterators.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.hzalloc.cz arrayobject.czarraytypes.c.srczarray_assign_scalar.czarray_assign_array.czarrayfunction_override.czbuffer.cz calculation.czcompiled_base.czcommon.cz convert.czconvert_datatype.czconversion_utils.czctors.cz datetime.czdatetime_strings.czdatetime_busday.czdatetime_busdaycal.cz descriptor.cz dragon4.czdtype_transfer.cz einsum.c.srcz flagsobject.czgetset.cz hashdescr.czitem_selection.cz iterators.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.cc slt|d}tj|}tj|s.t|}t||rht|d}| j j W5QRXgS)Nz__umath_generated.cr) rr-r.rrrrrrZ make_codeZdefdictr)rrrdirrrE)rgenerate_umath_pyrrrgenerate_umath_crs       z'configuration..generate_umath_cz umathmodule.cz reduction.cz funcs.inc.srcz simd.inc.srcz loops.h.srcz loops.c.srcz matmul.h.srcz matmul.c.srcz clip.h.srcz clip.c.srczufunc_object.czextobj.czcpuid.czscalarmath.c.srczufunc_type_resolution.cz override.cz override.hzgenerate_ufunc_api.pyZ_multiarray_umathzgenerate_numpy_api.pyz*.py)rrr; extra_infoZ _umath_testsz_umath_tests.c.src)rZ_rational_testsz_rational_tests.c.srcZ_struct_ufunc_testsz_struct_ufunc_tests.c.srcZ_operand_flag_testsz_operand_flag_tests.c.srctestsz tests/data))r5rrZnumpy.distutils.system_inforrZ local_pathrZ is_releasedrx simplefilterZMismatchCAPIWarningZcheck_api_versionrr7r rrrZ add_data_dirZadd_define_macrosr+r,rrMpathsrKr-r.rcrpython_compilerZadd_installed_libraryZadd_npy_pkg_configZ add_library add_extensionr2rrr Zmake_svn_version_py)parent_packageZtop_pathrrrrZ local_dirnrrrrrdepsrZnpymath_sourcesZis_msvcZnpysort_sourcesZ common_depsZ common_srcZ blas_infoZ have_blasrZmultiarray_depsZmultiarray_srcrZ umath_srcZ umath_depsr)rrr@rrrrr configurations@      kG                                                                                                        003                                              5                               r__main__)setup)r)rWN), __future__rrr-r+rrrxr,ros.pathrZnumpy.distutilsrdistutils.dep_utilrdistutils.sysconfigrZ#numpy._build_utils.apple_acceleraterr Z numpy.compatr Z setup_commonr2rr robjectrr0r1r3r9rnr$r#rrrrr%Znumpy.distutils.corer rrrrsH       P)%e J