§
    `Štj&p  ã                   ó  — 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mZmZmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(Z(da) e(j*        ¦   «         Z+ e,¦   «         Z-d„ Z.d„ Z/d„ Z0 e/ede0¦  «         dBd„Z1 e/ede1¦  «         dCd„Z2 e/ede2¦  «         	 	 	 dDd„Z3 e/ede3¦  «         dEd„Z4 e/ede4¦  «         d„ Z5d„ Z6 e/ede6¦  «         dFd„Z7 e/ede7¦  «         dGd „Z8d!d gfd"„Z9 e/ed#e9¦  «         d$„ Z: e/ed%e:¦  «         d&ed'<   d(ed)<   d*ed+<   d,ed-<   d.ed/<   d0ed1<   d2ed3<   d4ed5<   exj;        d6z  c_;        ej        d7k    r.d8ed9<    e$¦   «         r ej<        d:¦  «         d;ej;        z   e_;        eZ=	 	 	 	 	 dHd<„Zee_        eZ>d=„ Zee_        d>D ]1Z?ej@         A                    d?e?z   d@z   ¦  «        ZBeB� eCeBdAe¦  «         Œ2dS )Ié    N)Úcopy)ÚPath)Ú	ccompiler)Úcompiler_classÚgen_lib_optionsÚget_default_compilerÚnew_compilerÚ	CCompiler)ÚDistutilsExecErrorÚDistutilsModuleErrorÚDistutilsPlatformErrorÚCompileErrorÚUnknownFileError)Úcustomize_compiler)ÚLooseVersion)Úlog)Úfilepath_from_subprocess_outputÚforward_bytes_to_stdout)Ú	cyg2win32Úis_sequenceÚmingw32Úget_num_build_jobsÚ_commandline_dep_stringÚsanitize_cxx_flagsc                 ó&  — | dz   }t           j                             |¦  «        sdS t          |¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          |||¦  «        }|d         }||k    rdS d                     |dd…         ¦  «        }	d„ t          j        |	d¬¦  «        D ¦   «         }
	 t          j	        | ¦  «        j
        }|
D ]"}t          j	        |¦  «        j
        |k    r dS Œ#n# t          $ r Y dS w xY wdS )	z®
    Check if an objects needs to be rebuild based on its dependencies

    Parameters
    ----------
    obj : str
        object file

    Returns
    -------
    bool
    ú.dTNéÿÿÿÿÚ c                 óH   — g | ]}|d k    ¯|                      d¦  «        °|‘Œ S )ú
ú:)Úendswith)Ú.0Úxs     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/numpy/distutils/ccompiler.pyú
<listcomp>z _needs_build.<locals>.<listcomp>G   s6   € ð 2ð 2ð 2�!Ø�DŠyˆy §¢¨C¡¤ˆyð Øˆyˆyó    )ÚposixF)ÚosÚpathÚexistsÚopenÚ	readlinesr   ÚjoinÚshlexÚsplitÚstatÚst_mtimeÚOSError)ÚobjÚcc_argsÚextra_postargsÚpp_optsÚdep_fileÚfÚlinesÚcmdlineÚlast_cmdlineÚcontentsÚdepsÚt_objs               r%   Ú_needs_buildr@   '   s~  € ð �T‰z€HÝŒ7�>Š>˜(Ñ#Ô#ð Øˆtõ 
ˆh‰Œð ˜1Ø—’‘”ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ % W¨n¸gÑFÔF€GØ˜”9€LØ�wÒÐØˆtà�wŠw�u˜S˜b˜S”zÑ"Ô"€Hð2ð 2•u”{ 8°4Ð8Ñ8Ô8ð 2ñ 2ô 2€Dð
Ý”˜‘”Ô%ˆð ð 	ð 	ˆAÝŒw�q‰zŒzÔ" UÒ*Ð*Ø�t�tð +ð	øõ ð ð ð àˆtˆtðøøøð ˆ5s)   ¶AÁAÁAÃ;D  Ã>D  Ä 
DÄDc                 ó4   ‡— ˆfd„}t          | ||¦  «         d S )Nc                 ó   •—  ‰| g|¢R i |¤ŽS ©N© )ÚselfÚargsÚkwÚfuncs      €r%   ú<lambda>z replace_method.<locals>.<lambda>[   s!   ø€  $ $ tÐ"9¨dÐ"9Ð"9Ð"9°bÐ"9Ð"9€ r'   )Úsetattr)ÚklassÚmethod_namerH   Úms     ` r%   Úreplace_methodrN   Y   s)   ø€ à9Ð9Ð9Ð9€AÝˆE�; Ñ"Ô"Ð"Ð"Ð"r'   c                 ó   — dS )zÐ
    Does nothing here, but is called by the get_version method and can be
    overridden by subclasses. In particular it is redefined in the `FCompiler`
    class where more documentation can be found.

    NrD   ©rE   s    r%   ÚCCompiler_find_executablesrQ   d   s	   € ð 	€Dr'   Úfind_executablesc                 ó\  — |�|nt          t          j        ¦  «        }|€3|}t          |¦  «        r"d                     t          |¦  «        ¦  «        }t          j        |¦  «         	 | j        rt          j
        ||¬¦  «         n!t          j
        |t          j        |¬¦  «         dS # t          j        $ r}|j        }|j        }Y d}~nmd}~wt          $ r]}d|› d�}	 |                     t"          j        j        ¦  «        }n%# t(          $ r |                     d¦  «        }Y nw xY wd}Y d}~nd}~ww xY wt          |¦  «        r"d                     t          |¦  «        ¦  «        }| j        rt+          |¦  «         t-          j        d	|¦  «        rd
}nd}t1          d|||fz  ¦  «        ‚)aê  
    Execute a command in a sub-process.

    Parameters
    ----------
    cmd : str
        The command to execute.
    display : str or sequence of str, optional
        The text to add to the log file kept by `numpy.distutils`.
        If not given, `display` is equal to `cmd`.
    env : a dictionary for environment variables, optional

    Returns
    -------
    None

    Raises
    ------
    DistutilsExecError
        If the command failed, i.e. the exit status was not 0.

    Nú )Úenv)ÚstderrrU   z

z


Úutf8é   s   Too many open filesz2
Try rerunning setup command until build succeeds.r   z)Command "%s" failed with exit status %d%s)Údictr)   Úenvironr   r.   Úlistr   ÚinfoÚverboseÚ
subprocessÚcheck_outputÚSTDOUTÚCalledProcessErrorÚoutputÚ
returncoder3   ÚencodeÚsysÚstdoutÚencodingÚAttributeErrorr   ÚreÚsearchr   )	rE   ÚcmdÚdisplayrU   ÚexcÚoÚsÚeÚmsgs	            r%   ÚCCompiler_spawnrr   r   sî  € ð. �ˆ#ˆ#¥d­2¬:Ñ&6Ô&6€CØ€ØˆÝ�wÑÔð 	.Ø—h’h�t G™}œ}Ñ-Ô-ˆGÝ„HˆWÑÔÐðØŒ<ð 	LÝÔ# C¨SÐ1Ñ1Ô1Ð1Ð1åÔ# Cµ
Ô0AÀsÐKÑKÔKÐKð. ˆtøõ- Ô(ð ð ð ØŒJˆØŒNˆˆˆˆˆˆøøøøÝð ð ð ð �1ÐÐÐˆð	!Ø—’�œÔ,Ñ-Ô-ˆAˆAøÝð 	!ð 	!ð 	!Ø—’˜Ñ Ô ˆAˆAˆAð	!øøøð ˆˆˆˆˆˆøøøøðøøøõ* �3ÑÔð "Ø�hŠh•t˜C‘y”yÑ!Ô!ˆà„|ð #Ý Ñ"Ô"Ð"å	„yÐ'¨Ñ+Ô+ð ØCˆˆàˆÝ
ÐHØ  ! S˜Mñ*ñ +ô +ð +sH   Á(?B) Â)D5Â8CÃD5ÃD0Ã$DÄD0ÄD&Ä#D0Ä%D&Ä&D0Ä0D5Úspawnr   c                 ó0  — |€d}g }|D �]‹}t           j                             t           j                             |¦  «        ¦  «        \  }}t           j                             |¦  «        d         }|t           j                             |¦  «        d…         }|                     d¦  «        rk|                     d¦  «        dz   }|d|…         }	t           j                             t           j         	                    |	¦  «        ¦  «        }	|	||d…         z   }|| j
        vrt          d|›d|›d�¦  «        ‚|rt           j                             |¦  «        }t           j                             ||| j        z   ¦  «        }
|                     |
¦  «         �Œ�|S )	aÞ  
    Return the name of the object files for the given source files.

    Parameters
    ----------
    source_filenames : list of str
        The list of paths to source files. Paths can be either relative or
        absolute, this is handled transparently.
    strip_dir : bool, optional
        Whether to strip the directory from the returned paths. If True,
        the file name prepended by `output_dir` is returned. Default is False.
    output_dir : str, optional
        If given, this path is prepended to the returned paths to the
        object files.

    Returns
    -------
    obj_names : list of str
        The list of paths to the object files corresponding to the source
        files in `source_filenames`.

    Nr   é   z..é   zunknown file type 'z	' (from 'z'))r)   r*   ÚsplitextÚnormpathÚ
splitdriveÚisabsÚ
startswithÚrfindÚbasenameÚabspathÚsrc_extensionsr   r.   Úobj_extensionÚappend)rE   Úsource_filenamesÚ	strip_dirÚ
output_dirÚ	obj_namesÚsrc_nameÚbaseÚextÚiÚdÚobj_names              r%   ÚCCompiler_object_filenamesrŒ   »   sw  € ð. ÐØˆ
Ø€IØ$ð #ñ #ˆÝ”G×$Ò$¥R¤W×%5Ò%5°hÑ%?Ô%?Ñ@Ô@‰	ˆˆcÝŒw×!Ò! $Ñ'Ô'¨Ô*ˆØ•B”G—M’M $Ñ'Ô'Ð(Ð(Ô)ˆØ�?Š?˜4Ñ Ô ð 	 ð —
’
˜4Ñ Ô  Ñ"ˆAØ�R�a�R”ˆAÝ”× Ò ¥¤§¢°Ñ!3Ô!3Ñ4Ô4ˆAØ�t˜A˜B˜B”x‘<ˆDØ�dÔ)Ð)Ð)Ý"Ð"È3È3È3ÐPXÐPXÐPXÐ#YÑZÔZÐZØð 	*Ý”7×#Ò# DÑ)Ô)ˆDÝ”7—<’< 
¨D°4Ô3EÑ,EÑFÔFˆØ×Ò˜Ñ"Ô"Ð"Ñ"ØÐr'   Úobject_filenamesc	           	      ó  ‡ ‡‡‡ — t          ¦   «         }	t          5  t          €t          j        |	¦  «        addd¦  «         n# 1 swxY w Y   |sg S ddlm}
m}m} t          ‰ |
¦  «        rag }dD ]F}t          ‰ d|z   ¦  «        }|€Œ|                     d|›dd                     |¦  «        ›�¦  «         ŒGd	                     |¦  «        }n ‰ j        }d
d                     |¦  «        ›d	�}t          j        |¦  «         ‰                      |||||‰¦  «        \  }}ŠŠ }‰                      ‰ ||¦  «        Šdd                     ‰¦  «        z  }‰r|dd                     ‰¦  «        z  z  }t          j        |¦  «         ˆˆˆ ˆ fd„}t          ‰ |
¦  «        rÛt%          |                     ¦   «         ¦  «        }g g }}|D ] }||v rš||         \  }}‰ j        dk    rt+          |¦  «        }t+          |¦  «        }t-          |¦  «        j                             ¦   «         |v r% ||¦  «        s|                     |||ff¦  «         Œ‡|                     |||ff¦  «         Œ¡|}|D ]} ||¦  «         Œn|                     ¦   «         }t5          |¦  «        dk    rU|	dk    rOddlm}  ||	¦  «        5 }|                     ||¦  «        }ddd¦  «         n# 1 swxY w Y   t%          |¦  «         n|D ]} ||¦  «         Œ|S )aÁ  
    Compile one or more source files.

    Please refer to the Python distutils API reference for more details.

    Parameters
    ----------
    sources : list of str
        A list of filenames
    output_dir : str, optional
        Path to the output directory.
    macros : list of tuples
        A list of macro definitions.
    include_dirs : list of str, optional
        The directories to add to the default include file search path for
        this compilation only.
    debug : bool, optional
        Whether or not to output debug symbols in or alongside the object
        file(s).
    extra_preargs, extra_postargs : ?
        Extra pre- and post-arguments.
    depends : list of str, optional
        A list of file names that all targets depend on.

    Returns
    -------
    objects : list of str
        A list of object file names, one per source file `sources`.

    Raises
    ------
    CompileError
        If compilation fails.

    Nr   )Ú	FCompilerÚFORTRAN_COMMON_FIXED_EXTENSIONSÚhas_f90_header)Úf77Úf90ÚfixÚ	compiler_zFortran z compiler: rT   r    zC compiler: zcompile options: '%s'z
extra options: '%s'c           	      óp  •— | \  }\  }}t          |‰‰‰¦  «        sd S 	 t          5  |t          vr't                               |¦  «         	 d d d ¦  «         n-	 d d d ¦  «         n# 1 swxY w Y   t	          j        d¦  «         Œe	 t          5  ‰                     |||‰‰‰¦  «         d d d ¦  «         n# 1 swxY w Y   t          5  t                               |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          5  t                               |¦  «         d d d ¦  «         w # 1 swxY w Y   w xY w)NTgš™™™™™¹?)	r@   Ú_global_lockÚ_processing_filesÚaddÚtimeÚsleepÚ_job_semaphoreÚ_compileÚremove)rF   r4   Úsrcrˆ   r5   r6   r7   rE   s       €€€€r%   Úsingle_compilez)CCompiler_compile.<locals>.single_compile4  sl  ø€ Ø‰ˆ‰Zˆc�3Ý˜C ¨.¸'ÑBÔBð 	ØˆFð	åð ð àÕ/Ð/Ð/Ý%×)Ò)¨#Ñ.Ô.Ð.Øð	ð ð ñ ô ð ð à/ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ŒJ�s‰OŒOˆOð	ð	.åð Oð OØ—’˜c 3¨¨W°nÀgÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oõ ð .ð .Ý!×(Ò(¨Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .ø•ð .ð .Ý!×(Ò(¨Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .øøøsw   ¦%A$Á$A(Á+A(ÂC: ÂB3Â'C: Â3B7Â7C: Â:B7Â;C: ÃC-Ã-C1Ã4C1Ã:D5ÄD)ÄD5Ä)D-Ä-D5Ä0D-Ä1D5Úabsoftru   )ÚThreadPoolExecutor)r   r—   rœ   Ú	threadingÚ	SemaphoreÚnumpy.distutils.fcompilerr�   r�   r‘   Ú
isinstanceÚgetattrr�   r.   Úcompiler_sor   r\   Ú_setup_compileÚ_get_cc_argsr[   ÚkeysÚcompiler_typer   r   ÚsuffixÚlowerÚitemsÚlenÚconcurrent.futuresr¢   Úmap)!rE   Úsourcesr„   ÚmacrosÚinclude_dirsÚdebugÚextra_preargsr6   ÚdependsÚjobsr�   r�   r‘   rl   ÚfcÚfcompÚccompÚobjectsÚbuildr    Úobjects_to_buildÚf77_objectsÚother_objectsr4   rŸ   rˆ   Úbuild_itemsrn   r¢   ÚpoolÚresr5   r7   s!   `      `                       @@r%   ÚCCompiler_compilerÅ   ê   s>  øøøø€ õP ÑÔ€Dõ 
ð 7ð 7ÝÐ!Ý&Ô0°Ñ6Ô6ˆNð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð ð Øˆ	ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;õ �$˜	Ñ"Ô"ð 
:ØˆØ'ð 	Nð 	NˆBÝ˜D +¨b¡.Ñ1Ô1ˆEØˆ}ØØ�NŠNˆN¸¸¸¸C¿HºHÀU¹O¼O¸OÐLÑMÔMÐMÐMØ—)’)˜GÑ$Ô$ˆˆàÔ ˆˆØ(+¯ª°©¬¨¨Ð9ˆÝ„HˆWÑÔÐà×Ò 
¨F°LÀ'Ø '¨ñ9ô 9ñ 4€FˆG�^ W¨eð ×Ò ¨°Ñ>Ô>€GØ%¨¯ª°'Ñ):Ô):Ñ;€GØð HØÐ*¨c¯hªh°~Ñ.FÔ.FÑGÑGˆÝ„HˆWÑÔÐð.ð .ð .ð .ð .ð .ð .ð .õ6 �$˜	Ñ"Ô"ð $Ý §
¢
¡¤Ñ-Ô-ÐØ%'¨�]ˆØð 
	<ð 
	<ˆCØÐ&Ð&Ð&Ø  œ:‘��SØÔ% xÒ/Ð/Ý# C™.œ.�CÝ# C™.œ.�CÝ˜‘9”9Ô#×)Ò)Ñ+Ô+Ð/NÐNÐNØ)˜>¨#Ñ.Ô.ð Oà×&Ò&¨¨c°3¨ZÐ'8Ñ9Ô9Ð9Ð9à!×(Ò(¨#°°S¨zÐ):Ñ;Ô;Ð;øð "ˆð ð 	ð 	ˆAØˆN˜1ÑÔÐÐð	ð —k’k‘m”mˆå
ˆ5�z„z�A‚~€~˜$ š(˜(à9Ð9Ð9Ð9Ð9Ð9ØÐ Ñ%Ô%ð 	8¨Ø—(’(˜>¨;Ñ7Ô7ˆCð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8åˆS‰	Œ	ˆ	ˆ	ð ð 	ð 	ˆAØˆN˜1ÑÔÐÐð €Ns#   šAÁAÁ	AÊ1KËKËKÚcompilerD   c                 ó¬  ‡‡— t          j        d| j        j        ›d‰j        j        ›�¦  «         t	          | d¦  «        rjd| j        d         v r[t          j        ¦   «         dk    rt          j        dk    s4| j         	                    d¦  «         | j
         	                    d¦  «         ˆˆfd	„} |d
¦  «        r|                      ‰j        ¦  «          |d¦  «        r#‰j        D ]\  }}|                      ||¦  «         Œ |d¦  «        r‰j        D ]}|                      |¦  «         Œ |d¦  «        r"|                      | j        ‰j        z   ¦  «          |d¦  «        r"|                      | j        ‰j        z   ¦  «          |d¦  «        r|                      ‰j        ¦  «          |d¦  «        r|                      ‰j        ¦  «         dS dS )aû  
    Customize compiler using distutils command.

    Parameters
    ----------
    cmd : class instance
        An instance inheriting from ``distutils.cmd.Command``.
    ignore : sequence of str, optional
        List of ``distutils.ccompiler.CCompiler`` commands (without ``'set_'``) that should not be
        altered. Strings that are checked for are:
        ``('include_dirs', 'define', 'undef', 'libraries', 'library_dirs',
        'rpath', 'link_objects')``.

    Returns
    -------
    None

    z
customize z using ÚcompilerÚclangr   Úarm64Údarwinz-ftrapping-mathc                 ó2   •— t          ‰| d ¦  «        d uo| ‰vS rC   )r§   )Úattrrk   Úignores    €€r%   Úallowz&CCompiler_customize_cmd.<locals>.allowš  s$   ø€ Ý�s˜D $Ñ'Ô'¨tÐ3ÐJ¸ÀFÐ8JÐJr'   rµ   ÚdefineÚundefÚ	librariesÚlibrary_dirsÚrpathÚlink_objectsN)r   r\   Ú	__class__Ú__name__ÚhasattrrÈ   ÚplatformÚmachinere   r�   r¨   Úset_include_dirsrµ   rÐ   Údefine_macrorÑ   Úundefine_macroÚset_librariesrÒ   Úset_library_dirsrÓ   Úset_runtime_library_dirsrÔ   Úset_link_objectsrÕ   )rE   rk   rÎ   rÏ   ÚnameÚvalueÚmacros    ``    r%   ÚCCompiler_customize_cmdrå   x  s9  øø€ õ& „H€H¨¬Ô(?Ð(?Ð(?Ø(+¬Ô(>Ð(>ð@ñ Aô Að Aõ 	��jÑ!Ô!ð
3à�4”= Ô#Ð#Ð#ÝÔÑÔ 7Ò*Ð*­s¬|¸xÒ/GÐ/Gð 	Œ×ÒÐ.Ñ/Ô/Ð/ØÔ×ÒÐ 1Ñ2Ô2Ð2ðKð Kð Kð Kð Kð Kð €uˆ^ÑÔð 0Ø×Ò˜cÔ.Ñ/Ô/Ð/Ø€uˆX�„ð +Ø œZð 	+ð 	+‰MˆT�5Ø×Ò˜d EÑ*Ô*Ð*Ð*Ø€uˆW�~„~ð 'Ø”Yð 	'ð 	'ˆEØ×Ò Ñ&Ô&Ð&Ð&Ø€uˆ[ÑÔð ;Ø×Ò˜4œ>¨C¬MÑ9Ñ:Ô:Ð:Ø€uˆ^ÑÔð DØ×Ò˜dÔ/°#Ô2BÑBÑCÔCÐCØ€uˆW�~„~ð 1Ø×%Ò% c¤iÑ0Ô0Ð0Ø€uˆ^ÑÔð 0Ø×Ò˜cÔ.Ñ/Ô/Ð/Ð/Ð/ð0ð 0r'   Úcustomize_cmdc                 óÖ  ‡— g }d}t          | j                             ¦   «         ¦  «        }dD ]}||vr|                     |¦  «         Œ|D ]c}t	          | |¦  «        rQt          | |¦  «        }t          |t          |¦  «        ¦  «        }|                     |t          |¦  «        f¦  «         Œddt          |dz   ¦  «        z   dz   Šˆfd„|D ¦   «         }d 	                    |¦  «        S )Nr   )
ÚversionrÒ   rÓ   Úobject_switchÚcompile_switchrµ   rÐ   rÑ   rÔ   rÕ   z%-ru   zs = %sc                 ó   •— g | ]}‰|z  ‘ŒS rD   rD   )r#   ÚpropÚfmts     €r%   r&   z'_compiler_to_string.<locals>.<listcomp>¿  s   ø€ Ð*Ð*Ð*˜DˆS�4‰ZÐ*Ð*Ð*r'   r    )
r[   Úexecutablesr«   r�   rØ   r§   Úmaxr°   Úreprr.   )rÈ   ÚpropsÚmxr«   ÚkeyÚvr:   rí   s          @r%   Ú_compiler_to_stringrõ   °  sÿ   ø€ Ø€EØ	
€BÝ�Ô$×)Ò)Ñ+Ô+Ñ,Ô,€DðLð ð ˆð �dˆ?ˆ?Ø�KŠK˜ÑÔÐøØð )ð )ˆÝ�8˜SÑ!Ô!ð 	)Ý˜ #Ñ&Ô&ˆAÝ�R�˜S™œÑ"Ô"ˆBØ�LŠL˜#�t A™wœw˜Ñ(Ô(Ð(øØ
•�b˜‘d‘”Ñ
˜hÑ
&€CØ*Ð*Ð*Ð* EÐ*Ñ*Ô*€EØ�9Š9�UÑÔÐr'   c                 ó  — 	 |                       ¦   «          n# t          $ r Y nw xY wt          j        j        dk     rPt          d¦  «         t          | j        ¦  «         t          t          | ¦  «        ¦  «         t          d¦  «         dS dS )z×
    Print the compiler customizations to stdout.

    Parameters
    ----------
    None

    Returns
    -------
    None

    Notes
    -----
    Printing is only done if the distutils log threshold is < 2.

    rv   zP********************************************************************************N)Úget_versionÚ	Exceptionr   Ú_global_logÚ	thresholdÚprintrÖ   rõ   rP   s    r%   ÚCCompiler_show_customizationrü   Â  s•   € ð"Ø×ÒÑÔÐÐøÝð ð ð Øˆðøøøå
„Ô  Ò"Ð"Ýˆf‰ŒˆÝˆdŒnÑÔÐÝÕ! $Ñ'Ô'Ñ(Ô(Ð(Ýˆf‰Œˆˆˆð	 #Ð"s   ‚ —
$£$Úshow_customizationc                 ó  — t          j        d| j        j        z  ¦  «         t	          | ¦  «         |�r	 | j                             d¦  «         n# t          t          f$ r Y nw xY wt          | d¦  «        ryd| j
        d         v rj| j        sb| j
        d                              d¦  «        rd\  }}nd\  }}| j
        d                              ||¦  «        g| j
        d	d
…         z   | _        n^t          | d¦  «        rt          j        d| j
        ›d�¦  «         t          | d¦  «        s!t          j        d| j        j        z   ¦  «         t          | d¦  «        r5d| j
        d         v sd| j
        d         v sd| j
        d         v rd| _        nøt           j        dk    rèdd
l}dd
l}|                     ¦   «         }	 t           j                             |d¦  «        }t/          |d¦  «        5 }	|	                     d¦  «         d
d
d
¦  «         n# 1 swxY w Y   |                      |g|dd|dz   g¬¦  «         d| _        n# t4          $ r
 d| _        Y nw xY w|                     |¦  «         n# |                     |¦  «         w xY wd
S )ao  
    Do any platform-specific customization of a compiler instance.

    This method calls ``distutils.sysconfig.customize_compiler`` for
    platform-specific customization, as well as optionally remove a flag
    to suppress spurious warnings in case C++ code is being compiled.

    Parameters
    ----------
    dist : object
        This parameter is not used for anything.
    need_cxx : bool, optional
        Whether or not C++ has to be compiled. If so (True), the
        ``"-Wstrict-prototypes"`` option is removed to prevent spurious
        warnings. Default is False.

    Returns
    -------
    None

    Notes
    -----
    All the default options used by distutils can be extracted with::

      from distutils import sysconfig
      sysconfig.get_config_vars('CC', 'CXX', 'OPT', 'BASECFLAGS',
                                'CCSHARED', 'LDSHARED', 'SO')

    zcustomize %sz-Wstrict-prototypesrÈ   Úccr   Úgcc)r   úg++)rÿ   zc++ru   Nz#### z #######Úcompiler_cxxzMissing compiler_cxx fix for r  rÉ   Tr(   zfile.cÚwzint a;
z-MMDz-MFr   )r„   r·   F)r   r\   rÖ   r×   r   r¨   rž   rh   Ú
ValueErrorrØ   rÈ   r  r{   ÚreplaceÚwarnÚ_auto_dependsr)   râ   ÚtempfileÚshutilÚmkdtempr*   r.   r,   ÚwriterÆ   r   Úrmtree)
rE   ÚdistÚneed_cxxÚaÚbr  r	  ÚtmpdirÚfnr9   s
             r%   ÚCCompiler_customizer  ß  s  € õ> „Hˆ^˜tœ~Ô6Ñ7Ñ8Ô8Ð8Ý�tÑÔÐØñ Tð	ØÔ×#Ò#Ð$9Ñ:Ô:Ð:Ð:øÝ¥
Ð+ð 	ð 	ð 	ØˆDð	øøøõ �4˜Ñ$Ô$ð 	T¨°´¸qÔ1AÐ)AÐ)AØÔ$ð 8Ø”= Ô#×.Ò.¨uÑ5Ô5ð 'Ø'‘D�A�q�qà&‘D�A�qØ%)¤]°1Ô%5×%=Ò%=¸aÀÑ%CÔ%CÐ$DØ&*¤m°A°B°BÔ&7ñ%8�Ô!øõ �t˜ZÑ(Ô(ð ?Ý”�¨d¬m¨m¨mÐ=Ñ>Ô>Ð>Ý˜4 Ñ0Ô0ð TÝ”Ð8¸4¼>Ô;RÑRÑSÔSÐSõ
 ˆt�ZÑ Ô ð " e¨t¬}¸QÔ/?Ð&?Ð&?Ø&+¨t¬}¸QÔ/?Ð&?Ð&?Ø&-°´¸qÔ1AÐ&AÐ&AØ!ˆÔÐÝ	Œ�GÒ	Ð	ØˆˆˆØˆˆˆØ×!Ò!Ñ#Ô#ˆð
	"Ý”—’˜f hÑ/Ô/ˆBÝ�b˜#‘”ð $ !Ø—’˜
Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $à�LŠL˜"˜¨&Ø(.°°r¸D±yÐ'Að ñ Cô Cð Cà!%ˆDÔÐøÝð 	'ð 	'ð 	'Ø!&ˆDÔÐÐð	'øøøð �MŠM˜&Ñ!Ô!Ð!Ð!øˆF�MŠM˜&Ñ!Ô!Ð!Ð!øøøà
€Fs_   µA ÁA$Á#A$Ç 0I Ç0HÈI ÈHÈI ÈHÈ)I ÉI1 ÉIÉI1 ÉIÉI1 É1JÚ	customizeú[-.\d]+c                 ó   ‡ ‡‡— ˆˆ ˆfd„}|S )ak  
    Simple matching of version numbers, for use in CCompiler and FCompiler.

    Parameters
    ----------
    pat : str, optional
        A regular expression matching version numbers.
        Default is ``r'[-.\d]+'``.
    ignore : str, optional
        A regular expression matching patterns to skip.
        Default is ``''``, in which case nothing is skipped.
    start : str, optional
        A regular expression matching the start of where to start looking
        for version numbers.
        Default is ``''``, in which case searching is started at the
        beginning of the version string given to `matcher`.

    Returns
    -------
    matcher : callable
        A function that is appropriate to use as the ``.version_match``
        attribute of a ``distutils.ccompiler.CCompiler`` class. `matcher` takes a single parameter,
        a version string.

    c                 ó€  •— |                      dd¦  «        }d}‰r-t          j        ‰|¦  «        }|sd S |                     ¦   «         }	 t          j        ‰||d …         ¦  «        }|sd S ‰r=t          j        ‰|                     d¦  «        ¦  «        r|                     ¦   «         }Œa	 |                     d¦  «        S )Nr    rT   r   )r  ri   ÚmatchÚendrj   Úgroup)rE   Úversion_stringÚposrM   rÎ   ÚpatÚstarts       €€€r%   Úmatcherz%simple_version_match.<locals>.matcherL  sÆ   ø€ ð (×/Ò/°°cÑ:Ô:ˆØˆØð 	Ý”˜ Ñ/Ô/ˆAØð Ø�tØ—%’%‘'”'ˆCð	Ý”	˜#˜~¨c¨d¨dÔ3Ñ4Ô4ˆAØð Ø�tØð �"œ( 6¨1¯7ª7°1©:¬:Ñ6Ô6ð Ø—e’e‘g”g�ØØØ�wŠw�q‰zŒzÐr'   rD   )r  rÎ   r  r  s   ``` r%   Úsimple_version_matchr   2  s/   øøø€ ð4ð ð ð ð ð ð ð& €Nr'   Fc                 óJ  ‡	— |st          | d¦  «        r| j        S |                      ¦   «          	 | j        }n# t          $ r Y dS w xY w|r|d         sdS 	 | j        }n0# t          $ r# 	 | j        Š	n# t          $ r Y Y dS w xY wˆ	fd„}Y nw xY w	 t          j        |t          j	        ¬¦  «        }t          |¦  «        }d}n9# t          j        $ r}|j        }|j        }Y d}~nd}~wt          $ r d}d}Y nw xY wd}||v r ||¦  «        }|rt          |¦  «        }|| _        |S )a‡  
    Return compiler version, or None if compiler is not available.

    Parameters
    ----------
    force : bool, optional
        If True, force a new determination of the version, even if the
        compiler already has a version attribute. Default is False.
    ok_status : list of int, optional
        The list of status values returned by the version look-up process
        for which a version string is returned. If the status value is not
        in `ok_status`, None is returned. Default is ``[0]``.

    Returns
    -------
    version : str or None
        Version string, in the format of ``distutils.version.LooseVersion``.

    rè   Nr   c                 ód   •— t          j        ‰| ¦  «        }|sd S |                     d¦  «        }|S )Nrè   )ri   r  r  )r  rM   rè   r  s      €r%   r  z&CCompiler_get_version.<locals>.matcher…  s7   ø€ Ý”˜˜nÑ-Ô-ˆAØð Ø�tØ—g’g˜iÑ(Ô(ˆGØˆNr'   )rV   rX   r'   )rØ   rè   rR   Úversion_cmdrh   Úversion_matchÚversion_patternr^   r_   r`   r   ra   rb   rc   r3   r   )
rE   ÚforceÚ	ok_statusr#  r  rb   Ústatusrm   rè   r  s
            @r%   ÚCCompiler_get_versionr)  a  sÒ  ø€ ð( ð •W˜T 9Ñ-Ô-ð ØŒ|ÐØ×ÒÑÔÐðØÔ&ˆˆøÝð ð ð Øˆtˆtðøøøàð ˜k¨!œnð ØˆtðØÔ$ˆˆøÝð 
ð 
ð 
ð	ØÔ&ˆCˆCøÝð 	ð 	ð 	Ø�4�4�4ð	øøøð	ð 	ð 	ð 	ð 	ð 	ð 	ð
øøøðÝÔ(¨½ZÔ=NÐOÑOÔOˆõ 1°Ñ8Ô8ˆØˆˆøõ Ô(ð  ð  ð  Ø”ˆØ”ˆˆˆˆˆˆøøøøÝð ð ð ð ˆØˆˆˆð	øøøð €GØ�ÐÐØ�'˜&‘/”/ˆØð 	,Ý" 7Ñ+Ô+ˆGØ€D„LØ€Nsc   °8 ¸
AÁAÁA Á
BÁ)A1Á0BÁ1
B Á;BÁ?B Â BÂ
BÂ C ÃC7ÃC#Ã#C7Ã6C7r÷   c                 óŽ  — | j         dv r| S t          | ¦  «        }|j        |_        |j        d         gt          |j        dd…         ¦  «        z   |_        t
          j                             d¦  «        r>d|j        d         v r/|j        d         |j        d         g|j        dd…         z   |_        t
          j                             d¦  «        rO|j         	                    d	¦  «         |j         	                    d
¦  «         |j         	                    d
¦  «         n#|j        d         g|j        dd…         z   |_        |S )zÈ
    Return the C++ compiler.

    Parameters
    ----------
    None

    Returns
    -------
    cxx : class instance
        The C++ compiler, as a ``distutils.ccompiler.CCompiler`` instance.

    )ÚmsvcÚintelwÚintelemwr   ru   N)ÚaixÚos400Ú	ld_so_aixrv   r/  z-D__STDC_FORMAT_MACROSz-fno-extern-tls-init)
r¬   r   r  r   r¨   re   rÙ   r{   Ú	linker_sor�   )rE   Úcxxs     r%   ÚCCompiler_cxx_compilerr3  ¦  s<  € ð ÔÐ;Ð;Ð;Øˆå
ˆt‰*Œ*€CØÔ'€CÔØÔ'¨Ô*Ð+Ý(¨¬¸¸¸Ô)<Ñ=Ô=ñ>€C„OåŒ×ÒÐ 0Ñ1Ô1ð ,Ø˜3œ=¨Ô+Ð+Ð+àœ qÔ)¨3Ô+;¸AÔ+>Ð?Øœ-¨¨¨Ô+ñ,ˆŒå
„|×Ò˜wÑ'Ô'ð BàŒ×ÒÐ7Ñ8Ô8Ð8àŒ×ÒÐ5Ñ6Ô6Ð6ØŒ×ÒÐ3Ñ4Ô4Ð4Ð4àÔ)¨!Ô,Ð-°´¸a¸b¸bÔ0AÑAˆŒØ€Jr'   Úcxx_compiler)ÚintelccompilerÚIntelCCompilerz(Intel C Compiler for 32-bit applicationsÚintel)r5  ÚIntelItaniumCCompilerz7Intel C Itanium Compiler for Itanium-based applicationsÚintele)r5  ÚIntelEM64TCCompilerz(Intel C Compiler for 64-bit applicationsÚintelem)r5  ÚIntelCCompilerWz3Intel C Compiler for 32-bit applications on Windowsr,  )r5  ÚIntelEM64TCCompilerWz3Intel C Compiler for 64-bit applications on Windowsr-  )ÚpathccompilerÚPathScaleCCompilerz2PathScale Compiler for SiCortex-based applicationsÚpathcc)ÚarmccompilerÚArmCCompilerzArm C CompilerÚarm)ÚfujitsuccompilerÚFujitsuCCompilerzFujitsu C CompilerÚfujitsu))úlinux.*r7  )rG  r9  )rG  r;  )rG  r@  )Úntr,  )rH  r-  Úwin32)Úmingw32ccompilerÚMingw32CCompilerz>Mingw32 port of GNU C Compiler for Win32(for MSC built Python)r   z+Setting mingw32 as default compiler for nt.))rH  r   c                 óP  — |€!t          j        ¦   «         t           j        k    }| €t          j        } 	 |€t          | ¦  «        }t          |         \  }}}n,# t          $ r d| z  }|�|d|z  z   }t          |¦  «        ‚w xY wd|z   }	 t          |¦  «         n–# t          $ r‰}	t          |	¦  «        }t          j        dt          |¦  «        ¦  «         |dd …         }	 t          |¦  «         n3# t          $ r&}	t          |	¦  «        }t          d|z  ¦  «        ‚d }	~	ww xY wY d }	~	nd }	~	ww xY w	 t          j        |         }
t!          |
¦  «        |         }n$# t          $ r t          d|›d|›d	�¦  «        ‚w xY w |d ||¦  «        }||_        t          j        d
|z  ¦  «         |S )Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerznumpy.distutils.z,%s in numpy.distutils; trying from distutilsé   z4can't compile C/C++ code: unable to load module '%s'z0can't compile C/C++ code: unable to find class 'z' in module 'ú'znew_compiler returns %s)r   Úget_thresholdÚINFOr)   râ   r   r   ÚKeyErrorr   Ú
__import__ÚImportErrorÚstrr\   r   re   ÚmodulesÚvarsr]   r¶   )ÚplatrÈ   r]   Údry_runr&  Úmodule_nameÚ
class_nameÚlong_descriptionrq   rp   ÚmodulerK   s               r%   r	   r	   ñ  s=  € ð €ÝÔ#Ñ%Ô%­¬Ò1ˆØ€|ÝŒwˆð*ØÐÝ+¨DÑ1Ô1ˆHÝ6DÀXÔ6NÑ3ˆ�jÐ"2Ð"2øÝð *ð *ð *ØEÈÑLˆØÐØÐ-°Ñ8Ñ8ˆCÝ$ SÑ)Ô)Ð)ð	*øøøð
 % {Ñ2€KðDÝ�KÑ Ô Ð Ð øÝð 
Dð 
Dð 
DÝ�!‰fŒfˆÝŒÐ?Ý�S‘”ñ	ô 	ð 	à! ! " "”oˆð	DÝ�{Ñ#Ô#Ð#Ð#øÝð 	Dð 	Dð 	DÝ�a‘&”&ˆCÝ&ð (5Ø7Bñ(Cñ Dô Dð Døøøøð	Døøøð $Ð#Ð#Ð#Ð#øøøøð
DøøøðIÝ”˜[Ô)ˆÝ�V‘”˜ZÔ(ˆˆøÝð Ið Ið IÝ"Ð"Ø/9¨z¨z¸;¸;¸;ð$Hñ Iô Ið 	IðIøøøð ˆu�T˜7 EÑ*Ô*€HØ€HÔÝ„IÐ'¨5Ñ1Ñ2Ô2Ð2Ø€OsS   ³"A Á)A?ÂB Â
D+Â";D&ÃC.Ã-D&Ã.
DÃ8!DÄDÄD&Ä&D+Ä/'E Å!E8c                 óÆ   — t          | |||¦  «        }g }|D ]I}t          |¦  «        r#|                     t          |¦  «        ¦  «         Œ4|                     |¦  «         ŒJ|S rC   )Ú_distutils_gen_lib_optionsr   Úextendr[   r�   )rÈ   rÓ   Úruntime_library_dirsrÒ   ÚrÚlib_optsr‰   s          r%   r   r      su   € õ 	# 8¨\Ø#7¸ñ	Dô 	D€Aà€HØð ð ˆÝ�q‰>Œ>ð 	Ø�OŠO�D ™GœGÑ$Ô$Ð$Ð$à�OŠO˜AÑÔÐÐØ€Or'   )Úmsvc9r+  Ú_msvcÚbcppÚcygwincÚemxcÚunixcz
distutils.rÈ   r   )NN)r   r   )NNNr   NNN)rD   )r   )r  r   r   )NNNr   r   )Dr)   ri   re   rÙ   r/   rš   r^   r   Úpathlibr   Ú	distutilsr   Údistutils.ccompilerr   r   r   r	   r
   Údistutils.errorsr   r   r   r   r   Údistutils.sysconfigr   Údistutils.versionr   Únumpy.distutilsr   Únumpy.distutils.exec_commandr   r   Únumpy.distutils.misc_utilr   r   r   r   r   r   r£   rœ   ÚLockr—   Úsetr˜   r@   rN   rQ   rr   rŒ   rÅ   rå   rõ   rü   r  r   r)  r3  Ú_default_compilersr\   Ú_distutils_new_compilerr^  Ú_ccrU  ÚgetÚ_mrJ   rD   r'   r%   ú<module>ry     sH  ðØ 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð Ð Ð Ð à€ØˆyŒ~ÑÔ€Ø�C‘E”EÐ ð/ð /ð /ðd#ð #ð #ð	ð 	ð 	ð €ˆyÐ,Ð.HÑ IÔ IÐ IðE+ð E+ð E+ð E+ðN €ˆy˜' ?Ñ 3Ô 3Ð 3ð+ð +ð +ð +ðZ €ˆyÐ,Ð.HÑ IÔ IÐ Ià=AØ@DØ37ðJð Jð Jð JðX €ˆy˜)Ð%6Ñ 7Ô 7Ð 7ð40ð 40ð 40ð 40ðl €ˆy˜/Ð+BÑ CÔ CÐ Cðð ð ð$ð ð ð6 €ˆyÐ.Ð0LÑ MÔ MÐ MðOð Oð Oð Oðb €ˆy˜+Ð':Ñ ;Ô ;Ð ;ð-ð -ð -ð -ð^ ',¸°sð Að Að Að AðF €ˆy˜-Ð)>Ñ ?Ô ?Ð ?ð"ð "ð "ðH €ˆy˜.Ð*@Ñ AÔ AÐ AðG€ˆwÑ ðW€ˆxÑ ðI€ˆyÑ ðS€ˆxÑ ðU€ˆzÑ ðR€ˆxÑ ð.€ˆuÑ ð2€ˆyÑ ð 
Ð Ô ð !5ñ 5Ð Ô ð „<�7ÒÐð!;€N�9Ñð €w�y„yð Fð 	ˆŒÐ>Ñ?Ô?Ð?Ø';Ø)2Ô)Eñ(Fˆ	Ô$ð 'Ð ØØØØØð	*ð *ð *ð *ðX &€	Ô à,Ð ðð ð ð" ,€	Ô ð
 Jð 8ð 8€CØ	Œ�Š˜¨Ñ+¨jÑ8Ñ	9Ô	9€BØ	€~Øˆ�Ð% Ñ7Ô7Ð7øð8ð 8r'   