U
    d                     @   sj  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlT e jdd	d
kZesede jdd
d
kZeoeZe jdd
d	kZG dd dZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z d d! Z!d"d# Z"d$d% Z#d&d' Z$d.d)d*Z%e&d+krfd d,l'm(Z( e(e%d- dS )/    N)join)log)newer)get_config_var)npy_load_module)*NPY_RELAXED_STRIDES_CHECKING10z}Support for NPY_RELAXED_STRIDES_CHECKING=0 has been remove as of NumPy 1.23.  This error will eventually be removed entirely.NPY_RELAXED_STRIDES_DEBUGNPY_DISABLE_SVMLc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CallOnceOnlyc                 C   s   d | _ d | _d | _d S N)_check_types_check_ieee_macros_check_complex)self r   4/tmp/pip-unpacked-wheel-c1z6a0q8/numpy/core/setup.py__init__/   s    zCallOnceOnly.__init__c                 O   s8   | j d kr"t||}t|| _ ntt| j }|S r   )r   check_typespickledumpscopydeepcopyloadsr   akwoutr   r   r   r   4   s
    

zCallOnceOnly.check_typesc                 O   s8   | j d kr"t||}t|| _ ntt| j }|S r   )r   check_ieee_macrosr   r   r   r   r   r   r   r   r   r    <   s
    

zCallOnceOnly.check_ieee_macrosc                 O   s8   | j d kr"t||}t|| _ ntt| j }|S r   )r   check_complexr   r   r   r   r   r   r   r   r   r!   D   s
    

zCallOnceOnly.check_complexN)__name__
__module____qualname__r   r   r    r!   r   r   r   r   r   .   s   r   c                  C   s*   t rdS t } d| ko(d| ko(tjdkS )zZSVML library is supported only on x86_64 architecture and currently
    only on linux
    Fx86_64linuxl        )r   	sysconfigget_platformsysmaxsize)platformr   r   r   can_link_svmlL   s    r,   c                 C   s   t j| d stddS )Nz
/README.mdzHMissing `SVML` submodule! Run `git submodule update --init` to fix this.T)ospathexistsRuntimeError)Zsvmlpathr   r   r   check_svml_submoduleW   s    r1   c                   C   s&   t jdkrtjt jdS tdS dS )z return path where libpython* is.win32libsLIBDIRN)r)   r+   r-   r.   r   prefixr   r   r   r   r   pythonlib_dir]   s    
r6   c                   C   s
   t jdkS )zTReturn True if the NPY_NO_SIGNAL symbol must be defined in configuration
    header.r2   )r)   r+   r   r   r   r   is_npy_no_signald   s    r7   c                   C   s
   dt jkS )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-   environr   r   r   r   is_npy_no_smpi   s    	r9   c                 C   sX   ddl m} | }td|tjtjf  |dkr:| d |dksJ|dkrT| d d S )Nr   )get_build_architecturez3BUILD_ARCHITECTURE: %r, os.name=%r, sys.platform=%rZAMD64ZDISTUTILS_USE_SDKZIntelZFORCE_NO_LONG_DOUBLE_FORMATTING)numpy.distutils.misc_utilr:   printr-   namer)   r+   append)Zdeflistr:   r   r   r   r   win32_checkst   s    
r?   c                    s  ddgffdd	 dgffdd	dgf fdd	}t sZtd	tt  tD ]8}jt|d
dgdr^|tkrt| q^t| q^|t |tdgd |t	dgd t
D ]B}jddd|gdr|ddtjjd}t|df qdddg}|t|ds0d|d< |t|d tD ]}d }	t|dkrl|d |d t|d   }}
}ndt|dkr|d |d |d gt|d f\}}
}	}n*|d |d |d gt|d f\}}
}	}j|dd|
|	dr4|df q4tD ]t\}}||rt|df |dkrtjdkr rdd s|jd!d" td#d$D  qtD ]2\}}}}||||rvt|df qvtD ]8} |r|d%dd&d}t|df q|t! |t" d S )'NFzfeature_detection_math.hc                    s    j | |dt|  |dS )NT	librariesdeclcall	call_argsheaders)
check_funcFUNC_CALL_ARGS)	func_namerB   rE   )configmathlibsr   r   rF      s    z+check_math_capabilities.<locals>.check_funcc                    sV   t dd | D }t dd | D } j| d|||d}|rRdd | D  |S )Nc                 S   s   g | ]}|d fqS Tr   .0fr   r   r   
<listcomp>   s     zEcheck_math_capabilities.<locals>.check_funcs_once.<locals>.<listcomp>c                 S   s   g | ]}|t | fqS r   )rG   rL   r   r   r   rO      s     Fr@   c                 S   s   g | ]}t |d fqS    	fname2defrL   r   r   r   rO      s     )dictcheck_funcs_onceextend)
funcs_namerE   rC   rD   st)rI   rJ   moredefsr   r   rU      s    z1check_math_capabilities.<locals>.check_funcs_oncec                    s@   | |ds8| D ]"} ||dr t|df qdS dS d S )NrE   rQ   r   r>   rS   )rW   rE   rN   )rF   rU   rY   r   r   check_funcs   s    z,check_math_capabilities.<locals>.check_funcszNOne of the required function to build numpy is not available (the list is %s).Python.hmath.hrZ   zfeature_detection_stdio.hzfeature_detection_misc.h )rB   rC   rE   ._rQ   zstdlib.hz	xlocale.hzfeature_detection_locale.hzlocale.h   r      T)rB   rC   rD   rE   Zattribute_target_avx512f)r2   cygwin      c                 S   s   g | ]}d | qS )z-ffixed-xmm%sr   )rM   nr   r   r   rO      s     z+check_math_capabilities.<locals>.<listcomp>       ())#ZMANDATORY_FUNCSSystemErrorstrZOPTIONAL_STDFUNCS_MAYBE
check_declrS   ZOPTIONAL_STDFUNCSremoveZOPTIONAL_FILE_FUNCSZOPTIONAL_MISC_FUNCSZOPTIONAL_HEADERSrF   replacer-   r.   sepr>   ZOPTIONAL_LOCALE_FUNCSZOPTIONAL_INTRINSICSlenZOPTIONAL_FUNCTION_ATTRIBUTEScheck_gcc_function_attributer)   r+   Zcheck_compiler_gccZcheck_gcc_version_at_leastextra_compile_argsrV   rangeZ,OPTIONAL_FUNCTION_ATTRIBUTES_WITH_INTRINSICSZ,check_gcc_function_attribute_with_intrinsicsZOPTIONAL_VARIABLE_ATTRIBUTESZcheck_gcc_variable_attributeZC99_FUNCS_SINGLEZC99_FUNCS_EXTENDED)rI   extrY   rJ   r\   rN   hZlocale_headerstuprE   argsmdecfncodeheaderr   )rF   rU   rI   rJ   rY   r   check_math_capabilities   s    

",*


r   c                    s   g g }z,t  d dkr2tjddd |fW S W n tk
rH   Y nX  d}|rȈd |d tD ].} j|dgd	}|rp|d
t	| df qp fdd}|d |d |d |fS )Nr   ZInterixz+Disabling broken complex support. See #1365rb   )
stacklevelz	complex.h)ZHAVE_COMPLEX_HrQ   )ZNPY_USE_C99_COMPLEXrQ   rZ   zNPY_HAVE_%srQ   c                    s~    fddt D }tdd |D }j|||dsf|D ](}j|dddr:t|df q:ndd |D  d S )Nc                    s   g | ]}|  qS r   r   rL   precr   r   rO     s     z5check_complex.<locals>.check_prec.<locals>.<listcomp>c                 S   s   g | ]}|d fqS rK   r   rL   r   r   r   rO     s     )rC   rB   rA   TrQ   c                 S   s   g | ]}t |d fqS rP   rR   rL   r   r   r   rO      s     )ZC99_COMPLEX_FUNCSrT   rU   rF   r>   rS   rV   )r   flistrB   rN   rI   rJ   privr   r   
check_prec  s    

z!check_complex.<locals>.check_precr_   rN   l)
r-   unamewarningswarn	Exceptioncheck_headerr>   ZC99_COMPLEX_TYPESZ
check_typeZtype2def)rI   rJ   pubrX   tr   r   r   r   r!      s*    


r!   c                    s   g  g g } fdd}ddddg}|D ]Z}t d| }| j|dd	gd
}|rz| j|dd	gd
rdt d|   q*|| q*|D ]"}| j|dd	gd
}|r|| q fS )Nc                    s,     td|    dtd|    d S )Ndecl_%sNPY_%sr[   )rN   r   r   r   r   	_add_decl.  s    z$check_ieee_macros.<locals>._add_declisnanisinfZsignbitisfiniter   r]   r^   rZ   r   )rS   rn   Zcheck_macro_truer>   )rI   macrosr   Z_macrosrN   Z	py_symbolalready_declaredrX   r   r   r   r    (  s*    
r    c                 C   s|  g }g }dgdgddgdgdgdddgddgdgdgddgd
}|  d}|snd}d	tjkr`d
}td||  d}|r|d |d |  d}|r|d |d dD ]}	| jdt|	 dgd}|r|dt|	 dt|	 f q| j|	||	 d}|dkr.|dt|	 d| f qtd|	 qdD ]}	| jdt|	 dgd}
| j|	||	 d}|dkr|dt|	 d| f |
s|	dks|dt|	 d| f ntd|	 d|	|	f }| j|dd ||	 D d}|dkr|dt|	 d| f ntd| q@d D ]n}	| j|	dgt	 g||	 d!}|dkr|dt|	 d| f |dt|	 d| f ntd|	 q,| jd"dgdrZ| jd"dgt	 g|d" d!}|dkr
|dtd" d| f |dtd" d| f ntdd" | jd#|d# d}|dkrN|dtd# d| f ntdd# | jd$dgdstt
d%||fS )&Nrb   rf   re   rh      )
shortintlongfloatdoublelong doublePy_intptr_tPY_LONG_LONG	long longoff_tr]   pythonZ__pypy__pypyzICannot compile 'Python.h'. Perhaps you need to install {0}-dev|{0}-devel.zendian.h)HAVE_ENDIAN_HrQ   )ZNPY_HAVE_ENDIAN_HrQ   zsys/endian.h)HAVE_SYS_ENDIAN_HrQ   )ZNPY_HAVE_SYS_ENDIAN_HrQ   )r   r   r   z	SIZEOF_%srZ   zNPY_SIZEOF_%s)expectedr   z%dzChecking sizeof (%s) failed !)r   r   r   r   zstruct {%s __x; %s __y;}c                 S   s   g | ]}d | qS )rb   r   )rM   xr   r   r   rO     s     zcheck_types.<locals>.<listcomp>zNPY_SIZEOF_COMPLEX_%s)r   r   )rE   library_dirsr   r   r   ZCHAR_BITzCConfig wo CHAR_BIT is not supported, please contact the maintainers)r   r)   builtin_module_namesrl   formatr>   rn   Zsym2defZcheck_type_sizer6   r0   )
config_cmdrv   	build_dirZprivate_definesZpublic_definesr   resultr   restyper   Zcomplex_defr   r   r   r   M  s        







 







r   c                 C   sf   g }g dgdgg}t jd}|r4|d|d |D ] }| jd|ddd	d
r8|} qbq8td|S )Nrz   ZcpmlMATHLIBr   ,r   r
   zdouble log(double);T)rA   rD   rB   rC   zKmath library missing; rerun setup.py after setting the MATHLIB env variable)r-   r8   getinsertsplitrF   r0   )r   rJ   Zmathlibs_choicesZmathlibr3   r   r   r   check_mathlib  s&    r   c                 C   s   d}|  |dr|S dS dS )zSReturn the define value to use for NPY_VISIBILITY_HIDDEN (may be empty
    string).z%__attribute__((visibility("hidden")))Zhidemer_   N)rs   )rI   Zhider   r   r   visibility_define  s    r   r_   c               P      s  ddl m}mm} ddlm}m}m} ddlm	  ddl
m} |d| |j}t|d|rltdt tt td	jd
}	|d|	ddt fdd}
fdd}fdd}|d}|d}t|dd t|d t| d tdd tdd tdd tdd tdd dg dg tjd d d krd!g n$d"g d#g d$g jd% tddd&td%d'd(td)g}td*tj j!fd+g fd,d-}tddd.tddd/tddd0tddd1tddd2g}d3d4 }j"d||g d5g |gd6d7 #d8d9 #d:d9 j$d;tddd<tddd=tddd>tddd?gtddd@tdddAtdddBtdddCgdgdD tdddEdFtdddGtdddHtdddItdddJtddd@tdddAtdddKtdddLtdddMtdddNtdddCtdddOtdddBtdddPtdddQtdddRtdddStdddTtdddUtdddVtdddWtdddXdYg}tdddZtddd=tddd>tddd?tddd[tdddRtddd\tddd]tddd^tddd_g
}tj%&d`dadakr~|dbdc}n
|ddd}|ode|&dfg k}|r|}|tdddgtdddhg ni }tddditdddjtdddktdddltdddmtdddntdddotdddptdddqtdddrtdddstdddttdddutdddvtdddwtdddxtdddytdddztddd{tddd|tddd}tddd~tdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtddddtd%d'djtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dtd%d'dg8| }tdddtdddtdddtdddktdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddÃtdddătdddŃtdddƃtdddǃtdddȃtdddɃtdddʃtddd˃tddd̃tddd̓tddd΃tdddσtdddЃtdddуtddd҃tdddӃtdddԃtdddՃtdddփtddd׃tddd؃tdddكtdddڃtdddۃtddd܃tddd݃tdddރtddd߃tdddtdddtdddtdddtddddtddddtddddtddddtddddtddddtddddtddddgL}fdd}fdd}tdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtdddtddd tdddtdddtdddtdddtdddtdddtdddtdddtddd	tddd
tdddtdddg}td%d'dtd%d'dtdddqtdddtdddRtdddtdddtdtdg
}td'dddd}g }d	t' r:t(|r:t)j)|d dd}	fdd|D }|*  j$dd|| | |
||tdtd|||g || | | dg|| d j$dtdddtdddtddd_gd j$d tddd!gd j$d"tddd#gd j$d$tddd%gd j$dtddd_tddd&tddd'tddd(tddd)gtdddWtdddXdYtddd*tddd'tddd(tddd+tddd,tddd-tddd.g	d/ +d0 d1 d2 ,d3 -  S (4  Nr   )Configurationdot_joinexec_mod_from_location)get_infoblas_opt_infolapack_opt_info)NPY_CXX_FLAGS)releasecoreZcode_generatorserrorzgenerate_umath.pygenerate_umathra   r`   zinclude/numpyc              	      s  t |d}tj|}tj|s.t| tt|rP }t	
d|  || |\}}t|}|dd |f t|| || | |d  | ||d  t r|d tjdkstjdkrt| |d	| f | }t r|d
 tr|d n
|d t|}	|d|	 df t|rt|d |d |d |d t|d}
|D ]<}t|tr|
 d|  n|
 d|d |d f  q|
 d |dkr|
 d n|
 d|  |
 d |
 t!"d W 5 Q R X t	
d|  t|}
t	
|
#  W 5 Q R X t	
d n^g }t|L}
|
D ]@}d}|$|rb|t%|d  & }|rb||'d qbW 5 Q R X t(| dr| j)| tj|}|j*krj*| |S ) Nzconfig.hGenerating %sr   r   r   Z__NPY_PRIVATE_NO_SIGNALr2   ntZNPY_RESTRICT)ZNPY_CAN_LINK_SVMLrQ   r   rQ   )r   r   zHAVE_LDOUBLE_%srQ   Z$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_shiftw#define %s
#define %s %s
z#ifndef __cplusplus
inlinez/* #undef inline */
z#define inline %s
z#endif
z
                    #ifndef NUMPY_CORE_SRC_COMMON_NPY_CONFIG_H_
                    #error config.h should never be included directly, include npy_config.h instead
                    #endif
                    File: %sEOFz#define MATHLIBrA   )+r   r-   r.   dirnamer/   makedirsr   __file__get_config_cmdr   infor   r   r>   r   rV   r    r!   r7   r)   r+   r=   r?   Zcheck_restrictZcheck_inliner,   r   Z check_long_double_representationZ-check_for_right_shift_internal_compiler_erroropen
isinstancerm   writetextwrapdedentread
startswithrr   stripr   hasattrrA   numpy_include_dirs)rv   r   targetdr   rY   ignoredrJ   r   reptarget_flinesvalueZincl_dircocacherI   
header_dirr   r   generate_config_h  sx    













z(configuration.<locals>.generate_config_hc           
   	      s   t|dd  t|dd t|d}tj|}tj|sRt| tt|r	 }t
d|  || |\}}t r|d t r|d n
|d t|}| |d	  | ||d	  tr|d
 |jddgdr|d t|}|d|f |ddt f |ddt f t|dX}	|D ]<}t|trv|	d|  n|	d|d |d	 f  qV|	td W 5 Q R X t
d|  t|}	t
|	  W 5 Q R X t
d  |f |S )z@Depends on config.h: generate_config_h has to be called before !srccommonnpymathz_numpyconfig.hr   )ZNPY_NO_SIGNALrQ   )
NPY_NO_SMPrQ   )r   r   rQ   r   ZPRIdPTRz
inttypes.hrZ   )ZNPY_USE_C99_FORMATSrQ   ZNPY_VISIBILITY_HIDDENZNPY_ABI_VERSIONz0x%.8XZNPY_API_VERSIONr   r   r   r   z
                    #ifndef __STDC_FORMAT_MACROS
                    #define __STDC_FORMAT_MACROS 1
                    #endif
                    r   r   )!add_include_dirsr   r-   r.   r   r/   r   r   r   r   r   r   r   r7   r>   r9   r   rV   r    r!   r   rn   r   ZC_ABI_VERSIONC_API_VERSIONr   r   rm   r   r   r   r   add_data_files)
rv   r   r   r   r   r   rY   rJ   Zhidden_visibilityr   r   r   r   generate_numpyconfig_hZ  sL    






z-configuration.<locals>.generate_numpyconfig_hc                    s    fdd}|S )Nc                    st   t  d }tjd  z2t}td| |tj |\}}}W 5 tjd= X 	|f|f |fS )Nz.pyr   zexecuting %s)
r   r)   r.   r   
__import__r   r   generate_apir-   r   )rv   r   scriptrz   Zh_fileZc_fileZdoc_file)codegen_dirrI   r   module_namer   r   r     s    

z>configuration.<locals>.generate_api_func.<locals>.generate_apir   )r   r   )r   rI   r   )r   r   generate_api_func  s    z(configuration.<locals>.generate_api_funcgenerate_numpy_apigenerate_ufunc_apir   r   r   Z
multiarrayZumathZnpysortZ_simd)ZNPY_INTERNAL_BUILDr	   )ZHAVE_NPY_CONFIG_Hr	   rc   aix)Z_LARGE_FILESN)Z_FILE_OFFSET_BITSZ64)Z_LARGEFILE_SOURCEr	   )Z_LARGEFILE64_SOURCEr	   includez
_signbit.cZnumpyz	*object.hz	genapi.pyrq   )pkgnamez
numpy.corec                     s     }dD ]\}}}|dk}|rZ|j}| |_t|jdrZ|jj  |jj  |j||d}|sd|j_|j||d td|	  d| |r||_qt
|}dd	d
 |D }	ddd
 |D }
|	d< |
d< d S )N))czint main(void) { return 0;}r_   )c++z;int main(void){ auto x = 0.0; return static_cast<int>(x); }zFnote: A compiler with support for C++11 language features is required.r   compiler)langTz'Broken toolchain: cannot link a simple z
 program.  c                 S   s   g | ]}d | qS )z-l%sr   rM   r   r   r   r   rO     s     z;configuration.<locals>.get_mathlib_info.<locals>.<listcomp>c                 S   s   g | ]}d | qS )z%s.libr   r   r   r   r   rO     s     Zposix_mathlibZmsvc_mathlib)r   r   Zcxx_compilerr   rV   compiler_soZtry_linkverboser0   upperr   r   )ry   r   r   Z	test_codeZnoteZis_cppZbk_crX   ZmlibsZ
posix_mlibZ	msvc_mlib)r   rI   
subst_dictr   r   get_mathlib_info  s.    
z'configuration.<locals>.get_mathlib_infoznpy_math_internal.h.srcz
npy_math.czieee754.c.srcznpy_math_complex.c.srczhalffloat.cc                 S   s2   | j jdkrg S dg}| jdgr.|d |S )z Add flags if we are using MSVC compiler

        We can't see `build_cmd` in our scope, because we have not initialized
        the distutils build command, so use this deferred calculation to run
        when we are building the library.
        Zmsvcz/GL-z-d2VolatileMetadata-)r   compiler_typeZcompiler_optZcc_test_flagsr>   )Z	build_cmdflagsr   r   r   opts_if_msvc  s    
z#configuration.<locals>.opts_if_msvclib)include_dirsZextra_compiler_args)sourcesZinstall_dirZ
build_infoznpymath.ini.inzlib/npy-pkg-configzmlib.ini.inZ_multiarray_testsz_multiarray_tests.c.srczmem_overlap.cznpy_argparse.cznpy_hashtable.czmem_overlap.hznpy_argparse.hznpy_hashtable.hznpy_extint128.h)r
  dependsrA   Zdlpackzdlpack.hzarray_assign.hzbinop_override.hzcblasfuncs.hzlowlevel_strided_loops.hznpy_cblas.hznpy_config.hznpy_ctypes.hznpy_dlpack.hznpy_import.hznpy_longdouble.hz
npy_svml.hztempl_common.h.srczucsnarrow.hzufunc_override.hzumathmodule.hz	numpyos.hznpy_cpu_dispatch.hZsimdzsimd.hzarray_assign.cznpy_longdouble.czucsnarrow.czufunc_override.cz	numpyos.cznpy_cpu_features.cZNPY_USE_BLAS_ILP64r
   Zblas_ilp64_optrb   Zblas_opt)Z
HAVE_CBLASNdefine_macroszcblasfuncs.czpython_xerbla.czabstractdtypes.hzarrayobject.hzarraytypes.h.srczarrayfunction_override.hzarray_coercion.hzarray_method.hznpy_buffer.hzcalculation.hzcommon.hzcommon_dtype.hzconvert_datatype.hz	convert.hzconversion_utils.hzctors.hzdescriptor.hzdtypemeta.hzdtype_transfer.hz	dragon4.hzeinsum_debug.hzeinsum_sumprod.hzexperimental_public_dtype_api.hzgetset.hzhashdescr.hziterators.hzlegacy_dtype_implementation.hz	mapping.hz	methods.hzmultiarraymodule.hznditer_impl.hznumber.hz
refcount.hzscalartypes.hz
sequence.hzshape.hz
strfuncs.hz
typeinfo.hzusertypes.hzvdot.hZtextreadingz
readtext.hz_neighborhood_iterator_imp.hznpy_endian.hzarrayscalars.hz
noprefix.hznpy_interrupt.hznpy_3kcompat.hz
npy_math.hzhalffloat.hznpy_common.hznpy_os.hzutils.hzndarrayobject.hz	npy_cpu.hznumpyconfig.hzndarraytypes.hznpy_1_7_deprecated_api.hzabstractdtypes.czalloc.czarrayobject.czarraytypes.c.srczargfunc.dispatch.c.srczarray_coercion.czarray_method.czarray_assign_scalar.czarray_assign_array.czarrayfunction_override.czbuffer.czcalculation.czcompiled_base.czcommon.czcommon_dtype.cz	convert.czconvert_datatype.czconversion_utils.czctors.cz
datetime.czdatetime_strings.czdatetime_busday.czdatetime_busdaycal.czdescriptor.czdlpack.czdtypemeta.cz	dragon4.czdtype_transfer.czeinsum.c.srczeinsum_sumprod.c.srczexperimental_public_dtype_api.czflagsobject.czgetset.czhashdescr.czitem_selection.cziterators.czlegacy_dtype_implementation.czlowlevel_strided_loops.c.srcz	mapping.cz	methods.czmultiarraymodule.cznditer_templ.c.srcznditer_api.cznditer_constr.cznditer_pywrap.cznumber.cz
refcount.cz
sequence.czshape.czscalarapi.czscalartypes.c.srcz
strfuncs.cztemp_elide.cz
typeinfo.czusertypes.czvdot.cznpy_sort.h.srczx86-qsort.dispatch.cppzquicksort.cppzmergesort.cppztimsort.cppzheapsort.cppzradixsort.cppznpy_partition.hzselection.cppznpy_binsearch.hzbinsearch.cppzconversions.czfield_types.czgrowth.cz
readtext.czrows.czstream_pyobject.czstr_to_int.cztokenize.cppc              	      sl   t |d}tj|}tj|s.t| }t||rht|d}| 	 j
 j W 5 Q R X g S )Nz__umath_generated.cr   )r   r-   r.   r   r/   r   r   r   r   Z	make_codeZdefdictr   )rv   r   r   dirr   rN   )r   generate_umath_pyr   r   r   generate_umath_c  s    

z'configuration.<locals>.generate_umath_cc                    s~   ddl m} t|d}tj|}tj|s:t| t d}t||rzj	d}|d|
d|}|| d S )Nr   )r   z_umath_doc_generated.hzgenerate_umath_doc.pygenerate_umath_docra   r`   )r;   r   r   r-   r.   r   r/   r   r   r=   r   Z
write_code)rv   r   r   r   r  Zgenerate_umath_doc_pyrg   r  )r   rI   r   r   r   r   generate_umath_doc_header  s    


 z0configuration.<locals>.generate_umath_doc_headerzumathmodule.czreduction.czfuncs.inc.srczsimd.inc.srczloops.h.srczloops_utils.h.srczloops.c.srczloops_unary_fp.dispatch.c.srczloops_arithm_fp.dispatch.c.srczloops_arithmetic.dispatch.c.srczloops_minmax.dispatch.c.srcz"loops_trigonometric.dispatch.c.srczloops_umath_fp.dispatch.c.srcz!loops_exponent_log.dispatch.c.srczloops_hyperbolic.dispatch.c.srczloops_modulo.dispatch.c.srczmatmul.h.srczmatmul.c.srczclip.hzclip.cppzdispatching.czlegacy_array_method.czwrapping_array_method.czufunc_object.czextobj.czscalarmath.c.srczufunc_type_resolution.cz
override.cz_scaled_float_dtype.cz
override.hzgenerate_ufunc_api.pyzufunc_docstrings.pyZsvml)zsvml_z0_tanh_d_la.szsvml_z0_tanh_s_la.sz/**/*.sT)	recursivec                    s   g | ]}|  s|qS r   )endswith)rM   o)svml_filterr   r   rO   \  s     
 z!configuration.<locals>.<listcomp>Z_multiarray_umathr   zgenerate_numpy_api.pyz*.py)languager
  r  rA   extra_objects
extra_infoZextra_cxx_compile_argsZ_umath_testsz_umath_tests.c.srcz_umath_tests.dispatch.c)r
  Z_rational_testsz_rational_tests.cZ_struct_ufunc_testsz_struct_ufunc_tests.cZ_operand_flag_testsz_operand_flag_tests.cz_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)r
  r  testsz
tests/dataztests/examplesz*.pyi).r;   r   r   r   Znumpy.distutils.system_infor   r   r   Znumpy.distutils.ccompiler_optr   Znumpy.versionr   
local_pathr   r   simplefilterZMismatchCAPIWarningZcheck_api_versionr   r=   r   r   r   Zadd_data_dirZadd_define_macrosr)   r+   r   rV   pathsrT   r-   r.   rq   Zadd_installed_libraryZadd_npy_pkg_configadd_extensionr8   r   r,   r1   globsortZadd_subpackager   Zmake_svn_version_py) parent_packageZtop_pathr   r   r   r   r   Zis_releasedZ	local_dirrg   r   r   r   r   r   depsr  Znpymath_sourcesr  Zcommon_depsZ
common_srcZ	blas_infoZ	have_blasr  Zmultiarray_depsZmultiarray_srcr  r  Z	umath_srcZ
umath_depsZ	svml_pathZ	svml_objsr   )
r   r   r   rI   r   r   r  r   r  r  r   configuration  s   


jD


	2




































































































;>



































































S















"














r"  __main__)setup)r"  )r_   N))r-   r)   r'   r   r   r   r   r  os.pathr   Znumpy.distutilsr   distutils.dep_utilr   r   Znumpy.compatr   Zsetup_commonr8   r   r   rl   r   r   r   r,   r1   r6   r7   r9   r?   r   r!   r    r   r   r   r"  r"   Znumpy.distutils.corer$  r   r   r   r   <module>   sV   {)%e	
     h
