U
    ¸mœd…Ì  ã                   @   sv  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mZ d dlT e j d	d
¡dkZes®edƒ‚e j dd¡dkZeoÆe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�rrd d-l)m*Z* e*e'd.� dS )0é    N)Újoin)Úlog)Úlib_opts_if_msvc)Ú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   úI/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/core/setup.pyÚ__init__0   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   5   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"   E   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_svmlM   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_submoduleX   s    r2   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    
r7   c                   C   s
   t jdkS )zTReturn True if the NPY_NO_SIGNAL symbol must be defined in configuration
    header.r3   )r*   r,   r   r   r   r   Úis_npy_no_signale   s    r8   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_smpj   s    	r:   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_checksu   s    ÿ
r@   c                    sð  dddgf‡‡fdd„	‰ ddgdf‡‡‡fdd„	‰ddgf‡ ‡‡fd	d
„	}‡‡fdd„}ˆt dd�sttdtt ƒ ƒ‚tD ]"}ˆjt|ƒdgd�rxt |¡ qx|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¡ q¼dddg}|t|d��s,d|d< |t|d� tD ]Â}	d }
t|	ƒdk�rh|	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��r0ˆ |df¡ �q0tD ]2\}}ˆ ||¡�røˆ t|ƒdf¡ ||ƒ �qøt ¡ }d |k�r®tD ]2\}}ˆ ||¡�rBˆ t|ƒdf¡ ||ƒ �qBtD ]2\}}}}ˆ ||||¡�rzˆ t|ƒdf¡ �qztD ]8}ˆ |¡�r²| d!d¡ d"d¡}ˆ t|ƒdf¡ �q²d S )#NFzfeature_detection_math.hzfeature_detection_cmath.hc                    s   ˆ j | ˆ|dt|  |d�S )NT©Ú	librariesÚdeclÚcallÚ	call_argsÚheaders)Ú
check_funcÚFUNC_CALL_ARGS)Ú	func_namerC   rF   )ÚconfigÚmathlibsr   r   rG   †   s    úz+check_math_capabilities.<locals>.check_funcTc                    sZ   t dd„ | D ƒƒ}t dd„ | D ƒƒ}ˆ j| ˆd|||d�}|rV|rVˆ 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   )rH   rM   r   r   r   rP   ™   s     FrA   c                 S   s   g | ]}t |ƒd f‘qS ©é   ©Ú	fname2defrM   r   r   r   rP   £   s     )ÚdictÚcheck_funcs_onceÚextend)Ú
funcs_namerF   Úadd_to_moredefsrD   rE   Úst)rJ   rK   Úmoredefsr   r   rV   ”   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©rF   rR   r   ©r?   rT   )rX   rF   rO   )rG   rV   r[   r   r   Úcheck_funcs¦   s    z,check_math_capabilities.<locals>.check_funcsc                    sF   | dkrBt jdkrBˆ  ¡ rBˆ  dd¡sBˆj dd„ tddƒD ƒ¡ d S )	NZattribute_target_avx512f)r3   Úcygwiné   é   c                 S   s   g | ]}d | ‘qS )z-ffixed-xmm%sr   )rN   Únr   r   r   rP   ¼   s     zBcheck_math_capabilities.<locals>.check_gh14787.<locals>.<listcomp>é   é    )r*   r,   Zcheck_compiler_gccZcheck_gcc_version_at_leastÚextra_compile_argsrW   Úrange)Úfn)rJ   Úextr   r   Úcheck_gh14787¶   s    
ÿ
þÿz.check_math_capabilities.<locals>.check_gh14787)rY   zNOne of the required function to build numpy is not available (the list is %s).úPython.hr\   zfeature_detection_stdio.hzfeature_detection_misc.hÚ )rC   rD   rF   Ú.Ú_rR   zstdlib.hz	xlocale.hzfeature_detection_locale.hzlocale.hé   r   é   )rC   rD   rE   rF   r&   ú(ú))ZMANDATORY_FUNCSÚSystemErrorÚstrZOPTIONAL_FUNCS_MAYBEÚ
check_declrT   ZOPTIONAL_FILE_FUNCSÚremoveZOPTIONAL_MISC_FUNCSZOPTIONAL_HEADERSrG   Úreplacer.   r/   Úsepr?   ZOPTIONAL_LOCALE_FUNCSZOPTIONAL_INTRINSICSÚlenZOPTIONAL_FUNCTION_ATTRIBUTESÚcheck_gcc_function_attributer(   r)   Z OPTIONAL_FUNCTION_ATTRIBUTES_AVXZ0OPTIONAL_FUNCTION_ATTRIBUTES_WITH_INTRINSICS_AVXZ,check_gcc_function_attribute_with_intrinsicsZOPTIONAL_VARIABLE_ATTRIBUTESZcheck_gcc_variable_attribute)rJ   rh   r[   rK   r^   ri   rO   ÚhZlocale_headersÚtuprF   ÚargsÚmÚdecrg   r,   ÚcodeÚheaderr   )rG   rV   rJ   rh   rK   r[   r   Úcheck_math_capabilities…   s~    ýýþ	ÿ
ý",*ÿ
ÿ   ÿr�   c                    sŽ   g ‰g }ˆ   d¡}|r†ˆ d¡ | d¡ tD ].}ˆ j|dgd�}|r.| dt|ƒ df¡ q.‡ ‡‡fdd„}|d	ƒ |d
ƒ |dƒ ˆ|fS )Nz	complex.h)ZHAVE_COMPLEX_HrR   )ZNPY_USE_C99_COMPLEXrR   r\   zNPY_HAVE_%srR   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   rM   ©Úprecr   r   rP     s     z5check_complex.<locals>.check_prec.<locals>.<listcomp>c                 S   s   g | ]}|d f‘qS rL   r   rM   r   r   r   rP     s     )rD   rC   rB   TrR   c                 S   s   g | ]}t |ƒd f‘qS rQ   rS   rM   r   r   r   rP     s     )ZC99_COMPLEX_FUNCSrU   rV   rG   r?   rT   rW   )rƒ   ÚflistrC   rO   ©rJ   rK   Úprivr‚   r   Ú
check_prec  s    
ÿ
ÿz!check_complex.<locals>.check_precrk   rO   Úl)Úcheck_headerr?   ZC99_COMPLEX_TYPESZ
check_typeZtype2def)rJ   rK   ÚpubrZ   Ú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]   )rO   ©r†   rŠ   r   r   Ú	_add_decl*  s    z$check_ieee_macros.<locals>._add_declÚisnanÚisinfZsignbitÚisfiniterŒ   rj   zmath.hr\   r�   )rT   rt   Zcheck_macro_truer?   )rJ   Úmacrosr�   Z_macrosrO   Z	py_symbolÚalready_declaredrZ   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¡ q¶td|	 ƒ‚q¶d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 )&Nrn   ra   r`   rc   é   )
ÚshortÚintÚlongÚfloatÚdoubleúlong doubleÚPy_intptr_tÚPY_LONG_LONGú	long longÚoff_trj   ÚpythonZ__pypy__ÚpypyzICannot compile 'Python.h'. Perhaps you need to install {0}-dev|{0}-devel.zendian.h)ÚHAVE_ENDIAN_HrR   )ZNPY_HAVE_ENDIAN_HrR   zsys/endian.h)ÚHAVE_SYS_ENDIAN_HrR   )ZNPY_HAVE_SYS_ENDIAN_HrR   )r–   r—   r˜   z	SIZEOF_%sr\   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 )rn   r   )rN   Úxr   r   r   rP   ƒ  s     zcheck_types.<locals>.<listcomp>zNPY_SIZEOF_COMPLEX_%s)rœ   rŸ   )rF   Úlibrary_dirsr¤   r�   rž   ZCHAR_BITzCConfig wo CHAR_BIT is not supported, please contact the maintainers)r‰   r*   Úbuiltin_module_namesrr   Úformatr?   rt   Zsym2defZcheck_type_sizer7   r1   )Ú
config_cmdrh   Ú	build_dirZprivate_definesZpublic_definesr¤   Úresultr    ÚresÚtyper”   Zcomplex_defr   r   r   r   I  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 )Nr}   ZcpmlÚMATHLIBr   ú,r   r   zdouble log(double);T)rB   rE   rC   rD   zKmath library missing; rerun setup.py after setting the MATHLIB env variable)r.   r9   ÚgetÚinsertÚsplitrG   r1   )r©   rK   Zmathlibs_choicesZmathlibr4   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hidemerk   N)ry   )rJ   Zhider   r   r   Úvisibility_defineÇ  s    r´   rk   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ƒ‰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d/ƒtddd0ƒtddd1ƒg}ˆjd||g d2g t gd3œd4� ˆ !d5d6ˆ¡ ˆ !d7d6ˆ¡ ˆj"d8tddd9ƒtddd:ƒtddd;ƒtddd<ƒgtddd=ƒtddd>ƒtddd?ƒtddd@ƒgdgdA� tdddBdCƒtdddDƒtdddEƒtdddFƒtdddGƒtddd=ƒtddd>ƒtdddHƒtdddIƒtdddJƒtdddKƒtddd@ƒtdddLƒtddd?ƒ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dUdVƒg}tdddWƒtddd:ƒtddd;ƒtddd<ƒtdddXƒtdddOƒtdddYƒtdddZƒtddd[ƒtddd\ƒg
}tj# $d]d^¡d^k�rf|d_d`ƒ}n
|dadƒ}|�o„db| $dcg ¡k}|�r°|}| tddddƒtdddeƒg¡ ni }tdddfƒtdddgƒtdddhƒ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Œd�ƒtd$d&dgƒ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dhƒ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dŒdáƒtdddŒdâƒtdddŒdãƒtdddŒdäƒtdddŒdåƒtdddŒdæƒtdddŒdçƒtdddŒdèƒtdddéƒgM}‡‡‡fdêdë„}‡‡‡‡f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ƒg}ˆtd$d&d”ƒtd$d&d•ƒtdddnƒtdddƒƒtdddOƒ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dTƒtdddUdVƒ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gdA� ˆ )�d/¡ ˆ �d0¡ ˆ �d1¡ ˆ *�d2¡ ˆ +¡  ˆS (3  Nr   )ÚConfigurationÚdot_joinÚexec_mod_from_location)Úget_infoÚblas_opt_infoÚlapack_opt_info)ÚNPY_CXX_FLAGS)ÚreleaseÚcoreZcode_generatorszgenerate_umath.pyÚgenerate_umathrm   rl   zinclude/numpyc              	      s  t |ˆdƒ}tj |¡}tj |¡s.t |¡ tt|ƒ�rfˆ ¡ }t	 
d|¡ ˆ  || |¡\}}t|ƒ}| dd  |¡f¡ t|| ||ƒ | ˆ  |¡d ¡ | ˆ  ||¡d ¡ tƒ rÄ| d¡ tjdksØtjdkràt|ƒ | d	| ¡ f¡ | ¡ }tƒ �r| d
¡ t�r| d¡ n
| d¡ t|ƒ}	| d|	 df¡ t|ƒ�rt| d¡ | d¡ | d¡ | d¡ t|dƒ�¦}
tjdk�r–|
 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 }| $|¡�rx|t%|ƒd …  &¡ }|�rx| | 'd¡¡ �qxW 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_SIGNALr3   ÚntZNPY_RESTRICT)ZNPY_CAN_LINK_SVMLrR   ©r   rR   )r   r   zHAVE_LDOUBLE_%srR   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Údarwinz3/* may be overridden by numpyconfig.h on darwin */
ú#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 MATHLIBrB   )+r   r.   r/   Údirnamer0   Úmakedirsr   Ú__file__Úget_config_cmdr   Úinfor   r³   r?   r�   rW   r!   r"   r8   r*   r,   r>   r@   Zcheck_restrictZcheck_inliner-   r   Z check_long_double_representationZ-check_for_right_shift_internal_compiler_errorÚopenÚwriteÚ
isinstancers   ÚtextwrapÚdedentÚreadÚ
startswithrx   Ústripr²   ÚhasattrrB   Únumpy_include_dirs)rh   rª   ÚtargetÚdr©   r[   ÚignoredrK   rÆ   ÚrepÚtarget_fÚlineÚsÚvalueZincl_dir©ÚcocacherJ   Ú
header_dirr   r   Úgenerate_config_hé  s€    








ÿ




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_SIGNALrR   )Ú
NPY_NO_SMPrR   )rç   r   rR   rÁ   ZPRIdPTRz
inttypes.hr\   )ZNPY_USE_C99_FORMATSrR   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É   r0   rÊ   r   rË   rÌ   r   rÍ   r   r8   r?   r:   r³   rW   r!   r"   r   rt   r´   ZC_ABI_VERSIONÚC_API_VERSIONrÎ   rÐ   rs   rÏ   rÑ   rÒ   rÓ   Úadd_data_files)
rh   rª   rØ   rÙ   r©   rÚ   r[   rK   Zhidden_visibilityrÜ   rà   r   r   Úgenerate_numpyconfig_hW  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ê   )rh   rª   Úscriptr}   Zh_fileZc_fileZdoc_file)Úcodegen_dirrJ   râ   Úmodule_namer   r   rí   œ  s    

ÿz>configuration.<locals>.generate_api_func.<locals>.generate_apir   )rð   rí   )rï   rJ   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
   ro   Úaix)Z_LARGE_FILESN)Z_FILE_OFFSET_BITSZ64)Z_LARGEFILE_SOURCEr
   )Z_LARGEFILE64_SOURCEr
   Úincludez
_signbit.cÚnumpyz	*object.hz	genapi.pyrw   )Úpkgnamez
numpy.corec                     sê   ˆ  ¡ }dD ]˜\}}}|dk}|rZ|j}| ¡ |_t|jdƒrZ|jj ˆ ¡ |jj ˆ ¡ |j||d�}|sšd|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;}rk   )ú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   ©rN   rˆ   r   r   r   rP   û  s     z;configuration.<locals>.get_mathlib_info.<locals>.<listcomp>c                 S   s   g | ]}d | ‘qS )z%s.libr   rý   r   r   r   rP   ü  s     Zposix_mathlibZmsvc_mathlib)rÌ   rú   Zcxx_compilerrÖ   rW   Úcompiler_soZtry_linkÚverboser1   Úupperr³   r   )r|   r©   rû   Z	test_codeZnoteZis_cppZbk_crZ   ZmlibsZ
posix_mlibZ	msvc_mlib)r»   rJ   Ú
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.cÚ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  ÚdependsrB   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_optrn   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.cppzarm64_exports.cc              	      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É   r0   rÊ   r   rÎ   rÏ   Z	make_codeZdefdictrË   )rh   rª   rØ   Údirrî   rO   )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_docrm   rl   )r<   r·   r   r.   r/   rÉ   r0   rÊ   r   r>   r²   Z
write_code)rh   rª   r·   rØ   r  Zgenerate_umath_doc_pyrb   r  )rï   rJ   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loops_comparison.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string_ufuncs.cppz_scaled_float_dtype.cz
override.hzgenerate_ufunc_api.pyzufunc_docstrings.pyZsvmlr   z/**/*.sT)Ú	recursivec                    s   g | ]}|  ˆ ¡s|‘qS r   )Úendswith)rN   Úo)Úsvml_filterr   r   rP   M  s     
 z!configuration.<locals>.<listcomp>Z_multiarray_umathrø   zgenerate_numpy_api.pyz*.py)Úlanguager  r  rB   Ú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Ú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¼   Z
local_pathr   Zcheck_api_versionré   r>   r²   r   rè   Zadd_data_dirZadd_define_macrosr*   r,   r×   rW   ÚpathsrU   r.   r/   rw   Zadd_installed_libraryr   Zadd_npy_pkg_configÚadd_extensionr9   r°   r-   r2   ÚglobÚsortZadd_subpackagerê   Zmake_svn_version_py)Úparent_packageZtop_pathrµ   r·   r¸   r¹   rº   Zis_releasedZ	local_dirrb   rã   rë   rñ   rò   ró   Údepsr  Znpymath_sourcesZ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ï   rJ   r¶   r¾   r	  râ   r  r  r   ÚconfigurationÐ  sæ   


ÿnD


þ	2




ûþýÿÿ



ý



ý÷




















é









ö

ÿ






















































È;Å>




































































°W

















à$







öÿ
ùþ
ÿì
ý

ÿÿÿ
û
÷îr  Ú__main__)Úsetup)r  )rk   N)+r.   r*   r(   r   r   ÚwarningsrÑ   r  Úos.pathr   Znumpy.distutilsr   Znumpy.distutils.msvccompilerr   Údistutils.dep_utilr   r   Znumpy.compatr   Zsetup_commonr9   r°   r	   rr   r   r   r   r-   r2   r7   r8   r:   r@   r�   r"   r!   r   r³   r´   r  r#   Znumpy.distutils.corer  r   r   r   r   Ú<module>   sX   ÿ~!%e	
     `
