
    ~Od                        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          Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d"dZ'e(dk    rd d l)m*Z*  e*e'!           dS dS )#    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                   &    e Zd Zd Zd Zd Zd ZdS )CallOnceOnlyc                 0    d | _         d | _        d | _        d S N)_check_types_check_ieee_macros_check_complex)selfs    0lib/python3.11/site-packages/numpy/core/setup.py__init__zCallOnceOnly.__init__0   s      "&"    c                     | j         &t          |i |}t          j        |          | _         n+t	          j        t          j        | j                             }|S r   )r   check_typespickledumpscopydeepcopyloadsr   akwouts       r   r   zCallOnceOnly.check_types5   sS    $q'B''C &S 1 1D-T-> ? ?@@C
r   c                     | j         &t          |i |}t          j        |          | _         n+t	          j        t          j        | j                             }|S r   )r   check_ieee_macrosr   r   r   r   r    r!   s       r   r&   zCallOnceOnly.check_ieee_macros=   sS    "*#Q-"--C&,l3&7&7D##-T-D E EFFC
r   c                     | j         &t          |i |}t          j        |          | _         n+t	          j        t          j        | j                             }|S r   )r   check_complexr   r   r   r   r    r!   s       r   r(   zCallOnceOnly.check_complexE   sS    &)b))C"(,s"3"3D-T-@ A ABBC
r   N)__name__
__module____qualname__r   r   r&   r(    r   r   r   r   /   sP        # # #
        r   r   c                  j    t           rdS t          j                    } d| v od| v 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)platforms    r   can_link_svmlr5   M   sH      u%''H  $8#$e#%r   c                 h    t           j                            | dz             st          d          dS )Nz
/README.mdzHMissing `SVML` submodule! Run `git submodule update --init` to fix this.T)ospathexistsRuntimeError)svmlpaths    r   check_svml_submoduler<   X   s9    7>>(\122 : 9 : : 	:4r   c                      t           j        dk    r*t          j                            t           j        d          S t          d          S )z return path where libpython* is.win32libsLIBDIR)r2   r4   r7   r8   r   prefixr   r,   r   r   pythonlib_dirrB   ^   s5    
|ww||CJ///h'''r   c                  "    t           j        dk    S )zTReturn True if the NPY_NO_SIGNAL symbol must be defined in configuration
    header.r>   )r2   r4   r,   r   r   is_npy_no_signalrD   e   s     <7""r   c                      dt           j        v S )zxReturn True if the NPY_NO_SMP symbol must be defined in public
    header (when SMP support cannot be reliably enabled).	NPY_NOSMP)r7   environr,   r   r   is_npy_no_smprH   j   s     "*$$r   c                     ddl m}  |            }t          d|dt          j        dt
          j                   |dk    r|                     d           |dk    s|dk    r|                     d	           d S d S )
Nr   )get_build_architecturezBUILD_ARCHITECTURE: z
, os.name=z, sys.platform=AMD64DISTUTILS_USE_SDKIntelFORCE_NO_LONG_DOUBLE_FORMATTING)numpy.distutils.misc_utilrJ   printr7   namer2   r4   append)deflistrJ   r"   s      r   win32_checksrT   u   s    @@@@@@  A 
E11bgggs||% & & &G||*+++
 	G||qG||899999 $|r   c                     dddgf fd	ddgdf fd	ddgffd	} fd} t           d	          s$t          d
t          t                     z            t          D ]A}                     t          |          dg          rt                              |           B |t          dg            |t          dg           t          D ]y} 
                    ddd|g          r]|                    dd                              t          j        j        d          }                    t          |          df           zg d} |t           |          sd|d<    |t           |           t"          D ]}	d }
t%          |	          dk    r&|	d         |	d         t          |	d                   }}}nvt%          |	          dk    r2|	d         |	d         |	d         gt          |	d                   f\  }}}
}n1|	d         |	d         |	d         gt          |	d                   f\  }}}
} 
                    |dd||
          r                    |df           t&          D ]J\  }}                     ||          r/                    t          |          df            ||           Kt+          j                    }d|v rt.          D ]J\  }}                     ||          r/                    t          |          df            ||           Kt0          D ]C\  }}}}                     ||||          r$                    t          |          df           Dt4          D ]e}                     |          rN|                    dd                              dd          }                    t          |          df           fd S )NFzfeature_detection_math.hzfeature_detection_cmath.hc                 P                         | |dt          |          |          S )NT	librariesdeclcall	call_argsheaders)
check_funcFUNC_CALL_ARGS)	func_namerY   r\   configmathlibss      r   r]   z+check_math_capabilities.<locals>.check_func   s9    
   $Y/ ! 
 
 	
r   Tc                     t          d | D                       }t          d | D                       }                    | d|||          }|r!|r                    d | D                        |S )Nc                     g | ]}|d fS Tr,   .0fs     r   
<listcomp>zEcheck_math_capabilities.<locals>.check_funcs_once.<locals>.<listcomp>   s    3331aY333r   c                 ,    g | ]}|t           |         fS r,   )r^   re   s     r   rh   zEcheck_math_capabilities.<locals>.check_funcs_once.<locals>.<listcomp>   s"    EEEQ1nQ/0EEEr   FrW   c                 0    g | ]}t          |          d fS    	fname2defre   s     r   rh   zEcheck_math_capabilities.<locals>.check_funcs_once.<locals>.<listcomp>   s#    CCC1illA.CCCr   )dictcheck_funcs_onceextend)	
funcs_namer\   add_to_moredefsrZ   r[   str`   ra   moredefss	         r   rp   z1check_math_capabilities.<locals>.check_funcs_once   s     33
33344EE*EEEFF	$$ % 
 
  	E/ 	EOOCC
CCCDDD	r   c                      | |          s8| D ]3} ||          r$                     t          |          df           4dS dS )Nr\   rl   r   rR   rn   )rr   r\   rg   r]   rp   ru   s      r   check_funcsz,check_math_capabilities.<locals>.check_funcs   sk    
  
G<<< 	 7 7:a111 7OOYq\\1$566611r   c                     | dk    rlt           j        dv r`                                rN                    dd          s:j                            d t          dd          D                        d S d S d S d S d S )Nattribute_target_avx512f)r>   cygwin      c                     g | ]}d |z  S )z-ffixed-xmm%sr,   )rf   ns     r   rh   zBcheck_math_capabilities.<locals>.check_gh14787.<locals>.<listcomp>   s    DDD1,DDDr          )r2   r4   check_compiler_gcccheck_gcc_version_at_leastextra_compile_argsrq   range)fnr`   exts    r   check_gh14787z.check_math_capabilities.<locals>.check_gh14787   s    +++ 333--// 499!Q?? 4 &--DDeBmmDDDF F F F F	 ,+333333r   )rs   zNOne of the required function to build numpy is not available (the list is %s).Python.hrw   zfeature_detection_stdio.hzfeature_detection_misc.h )rY   rZ   r\   ._rl   )zstdlib.hz	xlocale.hzfeature_detection_locale.hzlocale.h   r      )rY   rZ   r[   r\   r.   ())MANDATORY_FUNCSSystemErrorstrOPTIONAL_FUNCS_MAYBE
check_declrn   OPTIONAL_FILE_FUNCSremoveOPTIONAL_MISC_FUNCSOPTIONAL_HEADERSr]   replacer7   r8   seprR   OPTIONAL_LOCALE_FUNCSOPTIONAL_INTRINSICSlenOPTIONAL_FUNCTION_ATTRIBUTEScheck_gcc_function_attributer0   r1    OPTIONAL_FUNCTION_ATTRIBUTES_AVX0OPTIONAL_FUNCTION_ATTRIBUTES_WITH_INTRINSICS_AVX,check_gcc_function_attribute_with_intrinsicsOPTIONAL_VARIABLE_ATTRIBUTEScheck_gcc_variable_attribute)r`   r   ru   ra   ry   r   rg   hlocale_headerstupr\   argsmdecr   r4   codeheaderr]   rp   s   ````              @@r   check_math_capabilitiesr      s    +-HI
 
 
 
 
 
 
  01LM        ( 01LM        F F F F F F OUCCC G /14_1E1EF G G 	G " * *Yq\\J<@@ 	*&&q)))K#.I-JKKKKK#.H-IJJJJ / /Re%!EE 	/		#s##++BGK==AOOYq\\1-...  N
 ;,nEEE C&q)>BBBB" 
$ 
$s88q==QQ3q6):):QtAAXX]]"%a&#a&3q6(Ic!f<M<M"MAtWaa"%a&#a&3q6(Ic!f<M<M"MAtWaQU%,  . . 	$OOQF###/  R..sB77 	OOYr]]A.///M"%''HH7 	" 	"GC223;; "2 2333b!!!8	4 	4!CT6BBT6+ + 42 2333* / /..r22 	/

3$$,,S#66AOOYq\\1-.../ /r   c                     g g }                      d          }|r                    d           |                    d           t          D ]C}                     |dg          }|r'|                    dt	          |          z  df           D fd} |d            |d	            |d
           |fS )Nz	complex.h)HAVE_COMPLEX_Hrl   )NPY_USE_C99_COMPLEXrl   rw   zNPY_HAVE_%srl   c                 Z     fdt           D             }t          d |D                       }                    |||          sD|D ]?}                    |dd          r$                    t          |          df           @d S                     d |D                        d S )Nc                     g | ]}|z   S r,   r,   )rf   rg   precs     r   rh   z5check_complex.<locals>.check_prec.<locals>.<listcomp>  s    999!QX999r   c                     g | ]}|d fS rd   r,   re   s     r   rh   z5check_complex.<locals>.check_prec.<locals>.<listcomp>  s    222q!T222r   )rZ   rY   rX   Trl   c                 0    g | ]}t          |          d fS rk   rm   re   s     r   rh   z5check_complex.<locals>.check_prec.<locals>.<listcomp>  s#    >>>1illA.>>>r   )C99_COMPLEX_FUNCSro   rp   r]   rR   rn   rq   )r   flistrY   rg   r`   ra   privs   `   r   
check_precz!check_complex.<locals>.check_prec  s    9999'8999E22E22233D**5t$5= + ? ? @ 7 7A((D3; ) = = 7Yq\\1$56667 7
 >>>>>?????r   r   rg   l)check_headerrR   C99_COMPLEX_TYPES
check_typetype2def)r`   ra   pubrt   tr   r   s   ``    @r   r(   r(     s   D
C 
		[	)	)B	 )***

-..." 	= 	=A""1{m"<<B =

MHQKK7;<<<
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 	
2
3
39r   c                   	 g g 	g }	fd}g d}|D ]}t          d|z            }|                     |ddg          }|rB|                     |ddg          r(	                    dt          d|z            z             q|                    |           |D ](}|                     |ddg          }|r ||           )	fS )Nc                                          t          d| z                                            dt          d| z            z             d S )Ndecl_%sNPY_%srx   )rg   r   r   s    r   	_add_declz$check_ieee_macros.<locals>._add_decl*  sJ    Ii!m,,---

8i	A66677777r   )isnanisinfsignbitisfiniter   r   zmath.hrw   r   )rn   r   check_macro_truerR   )
r`   macrosr   _macrosrg   	py_symbolalready_declaredrt   r   r   s
           @@r   r&   r&   $  s:   D
CF8 8 8 8 8 8 877G 	 	i!m,,	!,,Y#X. - 0 0 	&&y'2 ' 4 4 @

8i	A&>&>>???MM!   q:x*@AA 	IaLLL9r   c                 	   g }g }dgdgddgdgdgg dddgdgdgddgd
}|                      d          }|s4d}dt          j        v rd	}t          d
                    |                    |                      d          }|r*|                    d           |                    d           |                      d          }|r*|                    d           |                    d           dD ]}	|                     dt          |	          z  dg          }|r8|                    dt          |	          z  dt          |	          z  f           d|                     |	||	                   }|dk    r+|                    dt          |	          z  d|z  f           t          d|	z            dD ]/}	|                     dt          |	          z  dg          }
|                     |	||	                   }|dk    r]|                    dt          |	          z  d|z  f           |
s0|	dk    s*|                    dt          |	          z  d|z  f           nt          d|	z            d|	d|	d}|                     |d ||	         D                       }|dk    r,|                    dt          |	          z  d|z  f           t          d|z            d D ]}	|                     |	dgt                      g||	         !          }|dk    rU|                    dt          |	          z  d|z  f           |                    dt          |	          z  d|z  f           t          d|	z            |                     d"dg          r|                     d"dgt                      g|d"         !          }|dk    rU|                    dt          d"          z  d|z  f           |                    dt          d"          z  d|z  f           nt          dd"z            |                     d#|d#                   }|dk    r+|                    dt          d#          z  d|z  f           nt          dd#z            |                     d$dg          st          d%          ||fS )&Nr   r~   r}   )r      r}   )
shortintlongfloatdoublelong doublePy_intptr_tPY_LONG_LONG	long longoff_tr   python__pypy__pypyzICannot compile 'Python.h'. Perhaps you need to install {0}-dev|{0}-devel.zendian.h)HAVE_ENDIAN_Hrl   )NPY_HAVE_ENDIAN_Hrl   zsys/endian.h)HAVE_SYS_ENDIAN_Hrl   )NPY_HAVE_SYS_ENDIAN_Hrl   )r   r   r   z	SIZEOF_%srw   zNPY_SIZEOF_%s)expectedr   z%dzChecking sizeof (%s) failed !)r   r   r   r   zstruct {z __x; z __y;}c                     g | ]}d |z  S )r   r,   )rf   xs     r   rh   zcheck_types.<locals>.<listcomp>  s    2Q2Q2QQ1q52Q2Q2Qr   zNPY_SIZEOF_COMPLEX_%s)r   r   )r\   library_dirsr   r   r   CHAR_BITzCConfig wo CHAR_BIT is not supported, please contact the maintainers)r   r2   builtin_module_namesr   formatrR   r   sym2defcheck_type_sizerB   r:   )
config_cmdr   	build_dirprivate_definespublic_definesr   resultr   restyper   complex_defs               r   r   r   I  s   ON
 aS1a&KKK !1vs!Q! !H $$Z00F =111F--3VF^^= = 	= 
!
!*
-
-C
 834446777

!
!.
1
1C
 <7888:;;; ) 	J 	J##K'$--$?*#VV 	J!!?WT]]#BKRYZ^R_R_D_"`aaaa,,THTN,KKCaxx%%'Fs
&STTTT!"AD"HIII2 M M%00wt}}1L:D 1 G G(((GG!88!!?WT]]#BD3J"OPPP# RDM,A,A&&gdmm(CTCZ'PQQQ=DEEE
 59DD$$$?((2Q2Q(4.2Q2Q2Q ) S S!88!!#:WT]]#JDSVJ"WXXXX=KLLL( 	F 	F((
|+oo.!$ ) ) ) !88""K'$--$?#LMMM!!?WT]]#BD3J"OPPPP=DEEE ^j\BB M((:,+oo.!.1 ) 3 3 !88""K'.2I2I$I4RU:#VWWW!!?W^5L5L#LdUXj"YZZZZ=NOOO((!+. ) 0 0!88!!?W[5I5I#I4RU:"VWWWW=KLLL  j\ BB 0/0 0 	0 N**r   c                    g }g dgdgg}t           j                            d          }|r)|                    d|                    d                     |D ] }|                     d|ddd	
          r|} n!t          d          |S )Nr   cpmlMATHLIBr   ,r   r   zdouble log(double);T)rX   r[   rY   rZ   zKmath library missing; rerun setup.py after setting the MATHLIB env variable)r7   rG   getinsertsplitr]   r:   )r   ra   mathlibs_choicesmathlibr?   s        r   check_mathlibr     s    HSEF8,jnnY''G 77==#5#5666  
 
  & ! 
 
 	 HE	 #
 
 	
 Or   c                 :    d}|                      |d          r|S dS )zSReturn the define value to use for NPY_VISIBILITY_HIDDEN (may be empty
    string).z%__attribute__((visibility("hidden")))hidemer   )r   )r`   hides     r   visibility_definer    s+     3D**4:: rr   r   c                 +   !"#$%&'( 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}
 "&fd}!"&f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           nB"                    dg           "                    dg           "                    d g           "j                            "                    d!                     t          ddd"          t          d!d#d$          t          !d%          g}t7          d&t8          j        j        fd'g          '"'fd(}t          ddd)          t          ddd*          t          ddd+          t          ddd,          t          ddd-          g}"                    d||gz   d.g t@          gd/0           "!                    d1d2'           "!                    d3d2'           ""                    d4t          ddd5          t          ddd6          t          ddd7          t          ddd8          gt          ddd9          t          ddd:          t          ddd;          t          ddd<          gdg=           t          ddd>d?          t          ddd@          t          dddA          t          dddB          t          dddC          t          ddd9          t          ddd:          t          dddD          t          dddE          t          dddF          t          dddG          t          ddd<          t          dddH          t          ddd;          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dQdR          g}t          dddS          t          ddd6          t          ddd7          t          ddd8          t          dddT          t          dddK          t          dddU          t          dddV          t          dddW          t          dddX          g
}t8          j#        $                    dYdZ          dZk    r |d[d\          }n |d]d          }|od^|$                    d_g           v }|r8|}|                    t          ddd`          t          ddda          g           ni }g t          dddb          t          dddc          t          dddd          t          ddde          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dd          t          d!d#dc          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          |z   }g t          ddd          t          ddd          t          ddd          t          dd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          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          t          ddd          }$%&fd}!"#&fd}g 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dj          t          ddd          t          dddK          t          ddd          t          ddd          t          !d          t          !d	          g
}t          d#dddd
          }g }d(tK                      rNtM          |          r?tO          j'        |dz   d          }(fd|D             }|(                                 ""                    dd||z   |z   |
||t          !d          t          d          |||gz   ||z   |z   |z   dg||           ""                    dt          ddd          t          ddd          t          dddX          g           ""                    dt          ddd          g           ""                    dt          ddd          g           ""                    dt          ddd          g           ""                    dt          dddX          t          ddd          t          ddd           t          ddd!          t          ddd"          gt          dddP          t          dddQdR          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=           ")                    d(           "                    d)           "                    d*           "*                    d+           "+                                 "S (,  Nr   )Configurationdot_joinexec_mod_from_location)get_infoblas_opt_infolapack_opt_info)NPY_CXX_FLAGS)releasecorecode_generatorszgenerate_umath.pygenerate_umathr   r   zinclude/numpyc           	         t          |d          }t          j                            |          }t          j                            |          st          j        |           t          t          |          r                                }t          j
        d|                               || |          \  }}t          |          }|                    dd                     |          f           t          || ||           |                                        |          d                    |                                        ||          d                    t%                      r|                    d           t&          j        dk    st          j        dk    rt-          |           |                    d	|                                f           |                                }t3                      r|                    d
           t4          r|                    d           n|                    d           t7          |          }	|                    d|	z  df           t9          |          rT|                    d           |                    d           |                    d           |                    d           t;          |d          5 }
t&          j        dk    r|
                    d           |D ]X}t?          |t@                    r|
                    d|z             0|
                    d|d         d|d         d           Y|
                    d           |dk    r|
                    d           n|
                    d|z             |
                    d           |
                    tC          j"        d                     d d d            n# 1 swxY w Y   t          j
        d |z             t;          |          5 }
t          j
        |
#                                           d d d            n# 1 swxY w Y   t          j
        d!           ng }t;          |          5 }
|
D ]l}d"}|$                    |          rS|tK          |          d          &                                }|r(|                    |'                    d                     m	 d d d            n# 1 swxY w Y   tQ          | d#          r| j)                            |           t          j                            |          }|j*        vrj*                            |           |S )$Nzconfig.hGenerating %sr   r   r   __NPY_PRIVATE_NO_SIGNALr>   ntNPY_RESTRICT)NPY_CAN_LINK_SVMLrl   r   rl   )r   r   zHAVE_LDOUBLE_%srl   $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_shiftwdarwinz3/* may be overridden by numpyconfig.h on darwin */
#define %s
#define  
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 MATHLIBrX   )+r   r7   r8   dirnamer9   makedirsr   __file__get_config_cmdr   infor   r   rR   r   rq   r&   r(   rD   r2   r4   rQ   rT   check_restrictcheck_inliner5   r    check_long_double_representation-check_for_right_shift_internal_compiler_erroropenwrite
isinstancer   textwrapdedentread
startswithr   stripr   hasattrrX   numpy_include_dirs)r   r   targetdr   ru   ignoredra   r   reptarget_flinesvalueincl_dircocacher`   
header_dirs                  r   generate_config_hz(configuration.<locals>.generate_config_h  s   iZ88GOOF##w~~a   	KNNN6"" Z	>..00JH_f--- !( 3 3JY O OHg %Z00HOOY(:(:;<<<#JXxHHHOOG55jAA!DEEEOOG11*hGGJKKK  !! ; 9::: |w&&"'T//X&&& OO^Z-F-F-H-HIJJJ  ,,..F : 8999
 ) B @AAAA @AAA 3:>>COO.4a8999<ZHH M FGGG GHHH JKKK KLLL fc"" h<8++NNN   " I IA!!S)) I ~';<<<< AaDDD!A$$$'GHHHH 6777X%%NN#:;;;;NN#86#ABBBz*** x 0       +              6 HZ&()))f *)))* * * * * * * * * * * * * * *HUOOOOHf >$ > >D)Aq)) > $SVVWW 3 3 5 5  >$OOEKK,<,<===>> > > > > > > > > > > > > > > 3$$ 	+M  ***7??6**6444%,,X666s8   &DO88O<?O<)'QQ #Q A0T

TTc           	      l                        t          |dd                                          t          |dd                     t          |d          }t          j                            |          }t          j                            |          st          j        |           t          t          |          rډ	                                }t          j        d|           
                    || |          \  }}t                      r|                    d           t                      r|                    d           n|                    d           t!          |          }|                    
                    |          d	                    |                    
                    ||          d	                    t(          r|                    d
           |                    ddg          r|                    d           t-          |          }|                    d|f           |                    ddt.          z  f           |                    ddt0          z  f           t3          |d          5 }	|D ]X}t5          |t6                    r|	                    d|z             0|	                    d|d         d|d	         d           Y|	                    t;          j        d                     ddd           n# 1 swxY w Y   t          j        d|z             t3          |          5 }	t          j        |	                                           ddd           n# 1 swxY w Y   t          j        d                                |f           |S )z@Depends on config.h: generate_config_h has to be called before !srccommonnpymathz_numpyconfig.hr  )NPY_NO_SIGNALrl   )
NPY_NO_SMPrl   )rG  r   rl   r  PRIdPTRz
inttypes.hrw   )NPY_USE_C99_FORMATSrl   NPY_VISIBILITY_HIDDENNPY_ABI_VERSIONz0x%.8XNPY_API_VERSIONr  r  r  r   r  r  z
                    #ifndef __STDC_FORMAT_MACROS
                    #define __STDC_FORMAT_MACROS 1
                    #endif
                    Nr!  r"  )!add_include_dirsr   r7   r8   r#  r9   r$  r   r%  r&  r   r'  r   rD   rR   rH   r   rq   r&   r(   r   r   r  C_ABI_VERSIONC_API_VERSIONr,  r.  r   r-  r/  r0  r1  add_data_files)r   r   r6  r7  r   r8  ru   ra   hidden_visibilityr:  r?  r`   r@  s             r   generate_numpyconfig_hz-configuration.<locals>.generate_numpyconfig_hW  s    	Yx @ @AAAYy A ABBBi-=>>GOOF##w~~a   	KNNN6"" 5	..00JH_f--- !( 3 3JY O OGX!! 6 4555 3 12222 1222$Z00HOOG55jAA!DEEEOOG11*hGGJKKK( B @AAA $$Y$GG < :;;; !2* = =OO46GHIII OO.=0HIJJJOO.=0HIJJJ fc"" h! I IA!!S)) I ~';<<<< AaDDD!A$$$'GHHHH x 0                      HZ&()))f *)))* * * * * * * * * * * * * * *HUOOOz62333s%   BLL!L'M>>NNc                       fd}|S )Nc                    t          
dz             }t          j                            d           	 t	          
          }t          j        d|           |                    t          j                             |	                    \  }}}t          j        d= n# t          j        d= w xY w	                    	|f	|f           |fS )Nz.pyr   zexecuting %s)
r   r2   r8   r   
__import__r   r'  generate_apir7   rP  )r   r   scriptr   h_filec_filedoc_filecodegen_dirr`   r@  module_names          r   rV  z>configuration.<locals>.generate_api_func.<locals>.generate_api  s    +{U':;;FHOOA{+++ {++000+,>>"',,yR\:]:]+^+^(HQKKCHQK!!:v"6#-x"8: : :9s   AB B.r,   )r\  rV  r[  r`   r@  s   ` r   generate_api_funcz(configuration.<locals>.generate_api_func  s4    	 	 	 	 	 	 	 	 r   generate_numpy_apigenerate_ufunc_apirC  rD  rE  
multiarrayumathnpysort_simd)NPY_INTERNAL_BUILDr   )HAVE_NPY_CONFIG_Hr   r   aix)_LARGE_FILESN)_FILE_OFFSET_BITS64)_LARGEFILE_SOURCEr   )_LARGEFILE64_SOURCEr   includez
_signbit.cnumpyz	*object.hz	genapi.pyr   )pkgnamez
numpy.corec                                                      }dD ]\  }}}|dk    }|rs|j        }|                                |_        t          |j        d          r>|j        j                                       |j        j                                       |                    ||          }|sJd|j        _        |                    ||           t          d|	                                 d|           |r||_        t          |          }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.rq  compiler)langTz'Broken toolchain: cannot link a simple z
 program. r  c                     g | ]}d |z  S )z-l%sr,   rf   r   s     r   rh   z;configuration.<locals>.get_mathlib_info.<locals>.<listcomp>  s    999avz999r   c                     g | ]}d |z  S )z%s.libr,   ru  s     r   rh   z;configuration.<locals>.get_mathlib_info.<locals>.<listcomp>  s    :::qhl:::r   posix_mathlibmsvc_mathlib)r&  rr  cxx_compilerr4  rq   compiler_sotry_linkverboser:   upperr   r   )r   r   rs  	test_codenoteis_cppbk_crt   mlibs
posix_mlib	msvc_mlibr
  r`   
subst_dicts              r   get_mathlib_infoz'configuration.<locals>.get_mathlib_info  s    **,,

&
 "	+ "	+!D)T U]F 
J "*&*&7&7&9&9
# :.
;; J'077FFF'3::=III$$YT$::B .2
#+##ID#999"'djjll ' ' $' '    +&*
#j))XX995999::
HH::E:::;;	&0
?#%.
>"""r   znpy_math_internal.h.srcz
npy_math.czieee754.c.srcznpy_math_complex.c.srczhalffloat.clib)include_dirsextra_compiler_args)sourcesinstall_dir
build_infoznpymath.ini.inzlib/npy-pkg-configzmlib.ini.in_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  dependsrX   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.hsimdzsimd.hzarray_assign.cznpy_longdouble.czucsnarrow.czufunc_override.cz	numpyos.cznpy_cpu_features.cNPY_USE_BLAS_ILP64r   blas_ilp64_optr   blas_opt)
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.h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                    t          |d          }t          j                            |          }t          j                            |          st          j        |           }t          ||          r[t          |d          5 }|                    	                    j
        j                             d d d            n# 1 swxY w Y   g S )Nz__umath_generated.cr  )r   r7   r8   r#  r9   r$  r   r,  r-  	make_codedefdictr%  )	r   r   r6  dirrW  rg   r  generate_umath_pyr@  s	         r   generate_umath_cz'configuration.<locals>.generate_umath_c  s   i-BCCgoof%%w~~c"" 	K"   	Kfc"" Ka001G1?1HJ J K K KK K K K K K K K K K K K K K K 	s   4CCCc                    ddl m} t          |d          }t          j                            |          }t          j                            |          st          j        |           t          d          }t          ||          rZ 
	j	        d          } |d                    |
                    d                    |          }|                    |           d S d S )Nr   )r  z_umath_doc_generated.hzgenerate_umath_doc.pygenerate_umath_docr   r   )rO   r  r   r7   r8   r#  r9   r$  r   rQ   r   
write_code)r   r   r  r6  r  generate_umath_doc_pyr   r  r[  r`   r  r@  s           r   generate_umath_doc_headerz0configuration.<locals>.generate_umath_doc_header  s    DDDDDDi-EFFgoof%%w~~c"" 	K $[2I J J&// 	2&:;;A!7!7&&(="? "?))&11111		2 	2r   z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.pysvmlr,   z/**/*.sT)	recursivec                 >    g | ]}|                               |S r,   )endswith)rf   osvml_filters     r   rh   z!configuration.<locals>.<listcomp>M  s*    III1K1H1HIQIIIr   _multiarray_umathrp  zgenerate_numpy_api.pyz*.py)languager  r  rX   extra_objects
extra_infoextra_cxx_compile_args_umath_testsz_umath_tests.c.srcz_umath_tests.dispatch.c)r  _rational_testsz_rational_tests.c_struct_ufunc_testsz_struct_ufunc_tests.c_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),rO   r  r  r  numpy.distutils.system_infor  r  r	  numpy.distutils.ccompiler_optr
  numpy.versionr  
local_pathr   check_api_versionrO  rQ   r   r   rM  add_data_diradd_define_macrosr2   r4   r5  rq   pathsro   r7   r8   r   add_installed_libraryr   add_npy_pkg_configadd_extensionrG   r   r5   r<   globsortadd_subpackagerP  make_svn_version_py))parent_packagetop_pathr  r  r  r  r	  is_released	local_dirr   rA  rR  r]  r^  r_  depsr  npymath_sourcescommon_deps
common_src	blas_info	have_blasr  multiarray_depsmultiarray_srcr  r  	umath_src
umath_deps	svml_path	svml_objsr
  r?  r[  r`   r  r  r  r@  r  r  s)                                  @@@@@@@@@@r   configurationr    sJ   C C C C C C C C C C> > > > > > > > > >;;;;;;444444]6>8<<F!Iy"344K m[111[*=>>.//A++CHHQWWS\\,B,B,=? ?N !JnnGl l l l l l l\B B B B B B BH       +*+?@@**+?@@
DE8<<===
DE22333
DOO,,,
(((
D	22333
D55666
D00111
D	22333
D00111
9:;;;
89:::
|BQB5    "8!9::::  "=!>???  "<!=>>>  ">!?@@@
$$V\\)%<%<===	<00G[11k**D rw{+-FGHHJ0/ 0/ 0/ 0/ 0/ 0/ 0/d E9.GHHE9l;;E9o>>E9.FGGE9m<<O   #'7&88!#(8'9  !    .0D  
m-A   ,!%7PQQ!%?CC!%3CDD!%3DEEG "%?CC!%3CDD!%3DEE!%3DEEG  )k  	+ 	+ 	+  (J77"233"455.11"<==/22"233-00.11.11.11"344.11"344"455,//"677-00"455/22+.."677&(33/K6 "233/22"233"344"455"677-00"455+.."677J 
z~~*C00C77H-q11		HZ++	X2immOUW6X6XXI 
 	4x@@x1BCC 	 	 	 	 
;&899;o66; &899; &@AA	;
 &899; &677; n55; o66; j11; &677; &:;;; k22; &:;;; i00; n55;  m44!;" &899#;$ k22%;& &677';( &899);* &GHH+;, j11-;. m44/;0 m441;2 &EFF3;4 k225;6 k227;8 &:;;9;: o66;;< j11=;> l33?;@ o66A;B l33C;D i00E;F l33G;H l33I;J m44K;L h//M;N m\BBO;P G_55Q;R G%CDDS;T G^44U;V G%566W;X G\22Y;Z G%677[;\ G%566];^ G\22_;` G]33a;b G^44c;d GZ00e;f GY//g;h G%677i;j G[11k;l G_55m;n G%566o;p G%?@@q;v  w; OzQ&899Qi00Q o66Q &899	Q
 &899Q &>??Q &899Q &677Q &=>>Q &<==Q &@AAQ j11Q o66Q &788Q j11Q  &677!Q" k22#Q$ &:;;%Q& &:;;'Q( i00)Q* l33+Q, &:;;-Q. &9::/Q0 &<==1Q2 n553Q4 j115Q6 m447Q8 k229Q: &899;Q< n55=Q> &<==?Q@ &GHHAQB o66CQD j11EQF m44GQH &899IQJ m44KQL &EFFMQN &DEEOQP k22QQR k22SQT &:;;UQV &:;;WQX n55YQZ &788[Q\ &788]Q^ j11_Q` l33aQb l33cQd i00eQf m44gQh &9::iQj l33kQl n55mQn l33oQp m44qQr h//sQt "233uQv 	#;<<wQx 	?33yQz 	?33{Q| 	=11}Q~ 	>22Q@ 	?33AQB "344CQD 	?33EQF "344GQH 	?33IQJ m_EEKQL m_EEMQN mZ@@OQP m\BBQQR mX>>SQT m5HIIUQV m^DDWQX m^DDYQ` 	#455aQNn
 
 
 
 
 
 
2 2 2 2 2 2 2 2!11!//! 11! 00	!
 //! !455! //! !@AA! !ABB! !BCC! !>??! !EFF! !@AA! !DEE! !BCC!  !>??!!" !BCC#!$ 00%!& 00'!( **)!* ,,+!, 11-!. !899/!0 !:;;1!2 !1223!4 ,,5!6 !3447!8 !:;;9!: ..;!< !455=!@ !899A!IH G\22G]33j11j11"67700..566344J WfeWf==IIK /	:: Ii)3tDDD	IIII	III	 	
, %(!/)!;!+","3"8"4"&{4K"L"L"&v,,"2";"4"#
"# "&!7*!D +",$-;'0$.0=)  ? ? ?4 UG122UG677UH2332    *!%2EFFG  I I I .!%2IJJK  M M M .!%2IJJK  M M M "677++!233!566!788
 "677&(33++!233!56611!455!788!344

 +%    * '"""
%%%
()))
'"""
   Mr   __main__)setup)r  )r   N)+r7   r2   r0   r   r   warningsr/  r  os.pathr   numpy.distutilsr   numpy.distutils.msvccompilerr   distutils.dep_utilr   r   numpy.compatr   setup_commonrG   r   r
   r   r   r   r   r5   r<   rB   rD   rH   rT   r   r(   r&   r   r   r  r  r)   numpy.distutils.corer  r,   r   r   <module>r     s   				 



                      9 9 9 9 9 9 $ $ $ $ $ $ $ $ $ $ $ $ ( ( ( ( ( (     !#
/Ms S SWZ Z # H
+	GH H H  Z^^,GMMQTT 5V:V 
 JNN#5s;;sB        <	% 	% 	%  ( ( (# # #
	% 	% 	%: : : |/ |/ |/|  B# # #Jc+ c+ c+J  2  Y Y Y Yv z******	E&&&&&& r   