+
    iV                         ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
HtHt ^RIHtHtHt ^RIHtHtHtHtHtHtHtHtHtHtHt ]P:                  R8X  d   RtMA]P:                  R8X  d   R	tM-]P>                  ! R
PA                  ]P:                  4      4       RtR&R lt!R'R lt"R(R lt#R)R lt$R*R lt%R]R3R]R3R]R3R]R3R]R3R]R3R]R3R]R3R]R3R]R3/
t&R+R lt'R,R lt(R t)R  t*R! t+R-R" lt,R# t-R.R$ lt.R/R% lt/R# )0    N)Path)get_config_varget_config_varsget_path)CCompilerRunnerCppCompilerRunnerFortranCompilerRunner)get_abspath	make_dirscopyGlobArbitraryDepthGlobglob_at_depthimport_module_from_filepyx_is_cplussha256_of_stringsha256_of_fileCompileErrorposixz.ontz.objzUnknown os.name: {}c                   / pVe   VP                  4        F  w  r\        V\        4      '       d.   \        P                  ! VP                  4       F  p
WV
&   K	  	  KH  \        V\
        4      '       d$   \        VP                  V4       F  p
WV
&   K	  	  K  WV&   K  	  T;'       g    Rp\        P                  P                  V4      '       gK   \        P                  P                  V4      '       d   \        RP                  V4      4      h\        V4       Vf   RpV  F  p\        WRRR7       K  	  . pV  F  pV'       d#   \        P                  P!                  V4      w  rM>\        P                  P!                  \        P                  P#                  V4      4      w  rVP                  4       pVP%                  VP'                  V/ 4      4       VP)                  \+        W3RV/VB 4       K  	  V# )a8  Compile source code files to object files.

Parameters
==========

files : iterable of str
    Paths to source files, if ``cwd`` is given, the paths are taken as relative.
Runner: CompilerRunner subclass (optional)
    Could be e.g. ``FortranCompilerRunner``. Will be inferred from filename
    extensions if missing.
destdir: str
    Output directory, if cwd is given, the path is taken as relative.
cwd: str
    Working directory. Specify to have compiler run in other directory.
    also used as root of relative paths.
keep_dir_struct: bool
    Reproduce directory structure in `destdir`. default: ``False``
per_file_kwargs: dict
    Dict mapping instances in ``files`` to keyword arguments.
\*\*kwargs: dict
    Default keyword arguments to pass to ``Runner``.

Returns
=======
List of strings (paths of object files).
.z{} is not a directoryT)only_updatedest_is_dircwd)items
isinstancer   globpathnamer   r   filenameospathisdirexistsOSErrorformatr   r   splitextbasenameupdategetappendsrc2obj)filesRunnerdestdirr   keep_dir_structper_file_kwargskwargs_per_file_kwargskvr"   fdstpathsnameextfile_kwargss   &&&&&&,         f/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/utilities/_compilation/compilation.pycompile_sourcesr<      s   8 "#))+DA!T"" IIajj1D-.T* 2A122)!**c:D-.T* ; '(# , nnG77==!!77>>'""188ABBg
{A4@  H((+ID#(()9)9!)<=IDkkm+//267BsBkBC  O    c                 (   T ;'       g!    \         P                  P                  R R4      p V P                  4       R8X  d"   V'       d   \        RRR./V 3# \        RR./V 3# V P                  4       R8X  g    V'       d   \
        RR./V 3# \        / V 3# )SYMPY_COMPILER_VENDORgnuintelflagsz-nofor_mainz-cxxliblib_optionsfortran)r!   environr*   lowerr	   r   
ValueErrorvendorcplusr   s   &&&r;   get_mixed_fort_c_linkerrK   a   s    EErzz~~&=uEF||~ )}i896C C *}o.8 8	5	 F%"YK0&: : *   r=   c                   Vf`   \         P                  P                  \         P                  P                  V R,          4      4      w  rV'       d   V\	        R4      ,          pV'       g|   V'       d_   \        VP                  RR4      VVR7      w  r:pV
P                  4        F(  w  rW9   d   W,          P                  V4       K$  WV&   K*  	  MV'       d   \        pM\        pVP                  R. 4      pV'       d   RV9  d   VP                  R4       VP                  RR4      pV'       g   \        R	4      h\        WR
7      pT! Y;'       g    . ,           W3RV/VB pVP                  4        V# )a7  Link object files.

Parameters
==========

obj_files: iterable of str
    Paths to object files.
out_file: str (optional)
    Path to executable/shared library, if ``None`` it will be
    deduced from the last item in obj_files.
shared: bool
    Generate a shared library?
Runner: CompilerRunner subclass (optional)
    If not given the ``cplus`` and ``fort`` flags will be inspected
    (fallback is the C compiler).
cwd: str
    Path to the root of relative paths and working directory for compiler.
cplus: bool
    C++ objects? default: ``False``.
fort: bool
    Fortran objects? default: ``False``.
extra_objs: list
    List of paths to extra object files / static libraries.
\*\*kwargs: dict
    Keyword arguments passed to ``Runner``.

Returns
=======

The absolute path to the generated shared object / executable.

N
EXT_SUFFIXrI   rH   rB   z-shared
run_linkerTz*run_linker was set to False (nonsensical).r   r   )r!   r"   r'   r(   r   rK   r*   r   expandr   r   popr+   rG   r
   run)	obj_filesout_filesharedr.   r   rJ   fort
extra_objsr2   r9   extra_kwargsrI   r4   r5   rB   rN   runners   &&&&&&&&,        r;   linkr[   v   s2   D (()9)9)B-)HI|44H'!::h5 )F& %**,;I$$Q' !1I	 - *(JJw#EE!LL#L$/JEFF8-HI//R0(UsUfUF
JJLOr=   c                .   T;'       g    . pVP                  R. 4      pVP                  R. 4      p	\        P                  R8X  d   \        P                  ! R4       EM\        P                  R8X  Ed   \        4       p
VP                  R. 4      V
R,          .,           VR&   WR,          .,          p	R	pV
R
,          P                  4        Fy  pV'       d#   VP                  R. 4      RV.,           VR&   R	pK-  VP                  R4      '       d   VP                  VR,          4       K^  VP                  R4      '       g   Kw  RpK{  	  V
R,          pRP                  VP                  R4      RR 4      R,          pVP                  V4       M\        P                  R,          R8X  d   M\        R4      '       d   \        4       p
VP                  R. 4      V
R,          .,           VR&   WR,          .,          p	V
R,          P                  4        F,  pVP                  R4      '       g   K  W<R,          .,          pK.  	  M VP                  R. 4      pRpV F  pVV9  g   K  VP                  V4       K  	  \        V 3RRRVRVRVRVRVRVRV	RV/	VB # ) a0  Link Python extension module (shared object) for importing

Parameters
==========

obj_files: iterable of str
    Paths to object files to be linked.
so_file: str
    Name (path) of shared object file to create. If not specified it will
    have the basname of the last object file in `obj_files` but with the
    extension '.so' (Unix).
cwd: path string
    Root of relative paths and working directory of linker.
libraries: iterable of strings
    Libraries to link against, e.g. ['m'].
cplus: bool
    Any C++ objects? default: ``False``.
fort: bool
    Any Fortran objects? default: ``False``.
extra_objs: list
    List of paths of extra object files / static libraries to link against.
kwargs**: dict
    Keyword arguments passed to ``link(...)``.

Returns
=======

Absolute path to the generate shared object.
include_dirslibrary_dirswin32zWindows not yet supported.darwinlinklineLDFLAGSLIBDIRFLIBSz
-frameworkz-l:   NNTLIBRARYr   N:   NN:Nrg   NaixPy_ENABLE_SHARED
BLDLIBRARYrB   rV   r   rJ   rW   	librariesrX   rP   )-pthread)rR   sysplatformwarningswarnr   r*   split
startswithr+   joinr   r[   )rT   so_filer   rk   rJ   rW   rX   r2   r]   r^   cfgDictis_frameworkoptlibfilelibnamerB   needed_flagsflags   &&&&&&&,          r;   
link_py_sor|      sx   > RI::nb1L::nb1L
 ||w23		!!##ZZ
B779;M:NNz*++ 6?((*C%+ZZ
B%?<QTBU%Uz"$%%  R)--# + )$((7==-cr23B7!	b	U	",--%'G!'J!;wy?Q>R!RF:X.//L|,224>>$''b'*I 5 JJw#E LuLL  	 L$ Le L LE LPT L)L5>L)L6@LDJL Lr=   c                X   ^ RI HpHp ^ RI Hp V P	                  4       P                  R4      '       g(   V P	                  4       P                  R4      '       g   Q hT;'       g    RpT;'       g    RpVP                  RR4      '       d   RMR	p\        P                  P                  \        P                  P                  V 4      4      ^ ,          V,           p\        P                  P                  W4      p	V'       d   \        P                  ! 4       p
MRp
\        P                  ! V4        V! V4      pVP                  P                  V4       R
V9  d   ^VP                  R
&   V! V .V4      pVP                   ^ 8  d   \#        R4      h\        P                  P%                  \        P                  P'                  V 4      4      \        P                  P%                  V4      8w  d   \        P                  P)                  V	4      '       d   \        P*                  ! V	4       \,        P.                  ! \        P                  P                  \        P                  P'                  V 4      V4      V4       \        P                  ! V
4       V	#   \        P                  ! T
4       i ; i)a{  Generates a C file from a Cython source file.

Parameters
==========

src: str
    Path to Cython source.
destdir: str (optional)
    Path to output directory (default: '.').
cwd: path string (optional)
    Root of relative paths (default: '.').
**cy_kwargs:
    Second argument passed to cy_compile. Generates a .cpp file if ``cplus=True`` in ``cy_kwargs``,
    else a .c file.
)default_optionsCompilationOptions)compile.pyxz.pyr   rJ   F.cpp.clanguage_levelzCython compilation failed.)Cython.Compiler.Mainr~   r   r   rF   endswithr*   r!   r"   r'   r(   rs   getcwdchdir__dict__r)   
num_errorsrG   realpathdirnamer$   unlinkshutilmove)srcr/   r   	cy_kwargsr~   r   
cy_compiler9   c_namedstfileori_dir
cy_options	cy_results   &&&,         r;   simple_cythonizer     s     ;99;''399;+?+?+F+FFF
**CnnGMM'511&tCWWbgg..s34Q7#=Fggll7+G
))+HHSM'8
""9- 9,45J 01uj1	!#9::
 77BGGOOC01RWW5E5Eg5NNww~~g&&		'"KKRWW__S%96BGL
N 	s   /C!J A(J J)r   r   z.cxxz.fz.forz.ftnz.f90z.f95f95z.f03f2003z.f08f2008c                   \         P                  P                  \         P                  P                  V 4      4      w  rgVfT   \         P                  P	                  V 4      '       d   RpM+\         P                  P                  V 4      pT;'       g    Rp\         P                  P                  V4      '       d+   \         P                  P                  W&\        ,           4      pVP                  R. 4      pV'       d#   \        R4      p	W9  d   VP                  V	4       VP                  4       R8X  d   \        V 3RVRVRV/VB # Vf)   \        VP                  4       ,          w  rRV9  d   WR&   VP                  R. 4      pRpV F  pW9  g   K  VP                  V4       K  	  VP                  R	R
4      pV'       d   \        R4      hV! V .V3RVR	VRVRV/VB pVP!                  4        V# )as  Compiles a source code file to an object file.

Files ending with '.pyx' assumed to be cython files and
are dispatched to pyx2obj.

Parameters
==========

srcpath: str
    Path to source file.
Runner: CompilerRunner subclass (optional)
    If ``None``: deduced from extension of srcpath.
objpath : str (optional)
    Path to generated object. If ``None``: deduced from ``srcpath``.
cwd: str (optional)
    Working directory and root of relative paths. If ``None``: current dir.
inc_py: bool
    Add Python include path to kwarg "include_dirs". Default: False
\*\*kwargs: dict
    keyword arguments passed to Runner or pyx2obj

r   r]   includer   objpathr   stdrB   rN   Fz#src2obj called with run_linker=True)-fPIC)r!   r"   r'   r(   isabsr   r#   rs   objextrR   r   r+   rF   pyx2objextension_mappingr   rS   )srcpathr.   r   r   inc_pyr2   r8   r9   r]   
py_inc_dirr   rB   rz   r{   rN   rZ   s   &&&&&,          r;   r,   r,   ]  s   .   !1!1'!:;ID77==!!Gggoog.GnnG	ww}}W'',,wv6::nb1Li(
)
+
yy{fw ! !l !PS !! 	! ~'		45MJJw#ELLL 
 L%0J@AAWIw K\ K)K/2K:?KCIKF
JJLNr=   c                   V P                  R4      '       g   Q hT;'       g    RpT;'       g    RpT;'       g     \        P                  P                  V4      p\	        WR7      p\        P                  P                  V4      '       dk   \        P                  P                  V 4      p	\        P                  P                  V	4      w  r\        P                  P                  W\        ,           4      pT;'       g    / pW5R&   Vf   \        V 4      pWeR&   \        V 3RVRV/VB pT;'       g    . pVP                  R. 4      pRpV F  pW9  g   K  VP                  V4       K  	  VP                  R	. 4      pVP                  R
R4      '       d   \        R4      hV'       d   VP                  RR4      pMVP                  RR4      p\        V3RVRVRVRVRVR	VRRR
R/VB # )a  
Convenience function

If cwd is specified, pyxpath and dst are taken to be relative
If only_update is set to `True` the modification time is checked
and compilation is only run if the source is newer than the
destination

Parameters
==========

pyxpath: str
    Path to Cython source file.
objpath: str (optional)
    Path to object file to generate.
destdir: str (optional)
    Directory to put generated C file. When ``None``: directory of ``objpath``.
cwd: str (optional)
    Working directory and root of relative paths.
include_dirs: iterable of path strings (optional)
    Passed onto src2obj and via cy_kwargs['include_path']
    to simple_cythonize.
cy_kwargs: dict (optional)
    Keyword arguments passed onto `simple_cythonize`
cplus: bool (optional)
    Indicate whether C++ is used. default: auto-detect using ``.util.pyx_is_cplus``.
compile_kwargs: dict
    keyword arguments passed onto src2obj

Returns
=======

Absolute path of generated object file.

r   r   rO   
output_dirrJ   r/   r   rB   optionsstrict_aliasingFz/Cython requires strict aliasing to be disabled.r   zc++98c99r   r]   r   T)z-fwrapvrl   r   )r   r!   r"   r   r
   r#   r(   r'   rs   r   r   r   rR   r+   r   r,   )pyxpathr   r/   r   r]   r   rJ   r2   abs_objpath	pyx_fnamer8   r9   interm_c_filerB   rz   r{   r   r   s   &&&&&&&,          r;   r   r     s   J F####
**CnnG111Gg/K	ww}}[!!GG$$W-	GG$$Y/	'',,wv6RI!l}W%g$WTgT3T)TM%%2LJJw#E3LLL  jjB'Gzz#U++LMM jj(jj&= ' s  ,49?B"+/AF  r=   c                     V  F]  p\         P                  P                  V4      w  r4VP                  4       pV\        9   g   KA  \        V,          ^ ,          V8X  g   K\   R# 	  R# )r   TF)r!   r"   r'   rF   r   )srcsclsr   r8   r9   keys   &&    r;   _any_Xr     sP    GG$$S)	iik## %a(C/  r=   c                 "    \        V \        4      # N)r   r	   r   s   &r;   any_fortran_srcr     s    $-..r=   c                 "    \        V \        4      # r   )r   r   r   s   &r;   any_cplus_srcr     s    $)**r=   c                   VfK   \         P                  P                  \         P                  P                  V R,          4      4      ^ ,          pT;'       g    / pT;'       g    / p \	        \         P                  P                  W!4      V 4      pV#   \         d]    \        \        \        \        T 4      4      3RTRT/TB p\        T3RTR\        T 4      R\        T 4      RT/TB p\	        T4      p T# i ; i)a)  Compiles sources to a shared object (Python extension) and imports it

Sources in ``sources`` which is imported. If shared object is newer than the sources, they
are not recompiled but instead it is imported.

Parameters
==========

sources : list of strings
    List of paths to sources.
extname : string
    Name of extension (default: ``None``).
    If ``None``: taken from the last file in ``sources`` without extension.
build_dir: str
    Path to directory in which objects files etc. are generated.
compile_kwargs: dict
    keyword arguments passed to ``compile_sources``
link_kwargs: dict
    keyword arguments passed to ``link_py_so``
extra_objs: list
    List of paths to (prebuilt) object files / static libraries to link against.

Returns
=======

The imported module from of the Python extension.
r/   r   rW   rJ   rX   rP   )r!   r"   r'   r(   r   rs   ImportErrorr<   listmapr
   r|   r   r   )	sourcesextname	build_dircompile_kwargslink_kwargsrX   modobjssos	   &&&&&&   r;   compile_link_import_py_extr     s	   : ''""277#3#3GBK#@A!D#))rN##K*%bggll9&FP J  *tCW$=> @	 @#,@0>@ \) \/'2J \+G4\AK\OZ\%b)J*s   ()B A#C:9C:c                    T;'       g    \         P                  ! 4       p\        P                  P	                  V4      '       g   \        R V4      h. pV  EFZ  w  r4\        P                  P                  W4      pRp\        VP                  R4      4      P                  4       p\        P                  P                  V4      '       dk   \        P                  P                  VR,           4      '       d"   \        VR,           4      P                  4       pM\        V4      P                  4       pW8g  pV'       dd   \        VR4      ;_uu_ 4       p	V	P                  V4       RRR4       \        VR,           R4      ;_uu_ 4       p	V	P                  V4       RRR4       VP!                  V4       EK]  	  W!3#   + '       g   i     L^; i  + '       g   i     L<; i)zNon-existent directory: Tutf-8z.sha256wtN)tempfilemkdtempr!   r"   r#   r%   rs   r   encode	hexdigestr$   r   	read_textr   openwriter+   )
r   r   source_filesr8   r   destdifferssha256_in_memsha256_on_diskfhs
   &&        r;   _write_sources_to_build_dirr   0  sK   //X--/I77==##0)<<L	ww||I,(G)<=GGI77>>$ww~~dY.//!%dY&6!7!A!A!C!/!5!?!?!A$5GdD!!R "dY&--' .D!! " "" "!--s   F7G
7G
Gc                F    \        W4      w  r1\        V3RV/VB pRV/pWE3# )a  Compiles, links and imports extension module from source.

Parameters
==========

sources : iterable of name/source pair tuples
build_dir : string (default: None)
    Path. ``None`` implies use a temporary directory.
**kwargs:
    Keyword arguments passed onto `compile_link_import_py_ext`.

Returns
=======

mod : module
    The compiled and imported extension module.
info : dict
    Containing ``build_dir`` as 'build_dir'.

r   )r   r   )r   r   r2   r   r   infos   &&,   r;   compile_link_import_stringsr   J  s7    * :'ML
$\
QY
Q&
QC#D9r=   c                8   V'       d   Ve   \        R4      h \        W4      w  rQ\        \        \	        \
        V4      4      3RVRV/T;'       g    / B p\        V3RVR\        V4      R\        V4      /T;'       g    / B p\        P                  ! V.\        P                  \        P                  R7      pVP                  4       p	VP                  4        U
u. uF  qP                  R4      NK  	  up
w  rV'       d>   \        P                   P#                  V4      '       d   \$        P&                  ! V4       RpR	T	R
T/pY3T3# u up
i   T'       d@   \        P                   P#                  T4      '       d   \$        P&                  ! T4       Rpi i i ; i)a(  Compiles, links and runs a program built from sources.

Parameters
==========

sources : iterable of name/source pair tuples
build_dir : string (default: None)
    Path. ``None`` implies use a temporary directory.
clean : bool
    Whether to remove build_dir after use. This will only have an
    effect if ``build_dir`` is ``None`` (which creates a temporary directory).
    Passing ``clean == True`` and ``build_dir != None`` raises a ``ValueError``.
    This will also set ``build_dir`` in returned info dictionary to ``None``.
compile_kwargs: dict
    Keyword arguments passed onto ``compile_sources``
link_kwargs: dict
    Keyword arguments passed onto ``link``

Returns
=======

(stdout, stderr): pair of strings
info: dict
    Containing exit status as 'exit_status' and ``build_dir`` as 'build_dir'

NzIAutomatic removal of build_dir is only available for temporary directory.r/   r   rW   rJ   )stdoutstderrr   exit_statusr   )rG   r   r<   r   r   r
   r[   r   r   
subprocessPopenPIPEwaitcommunicatedecoder!   r"   r#   r   rmtree)r   r   cleanr   r   r   r   progpr   txtr   r   r   s   &&&&&         r;   compile_run_stringsr   e  sl   6 &dee"=g"QtC\$BC HY H#,H1?1E1E2HD Ni N(6N'5N:E:K:KN dVJOOJOOTffh9:I#**W-IRWW]]9--MM)$I;Y?DT!! JRWW]]9--MM)$I .5s$   CE E6E E -F>F)NNNFN)NFN)NFNNFFN)NNNFFN)NN)NNNF)NNNNNN)Nr   NNNr   )NFNN)0r   r!   r   r   rm   r   ro   pathlibr   	sysconfigr   r   r   runnersr   r   r	   utilr
   r   r   r   r   r   r   r   r   r   r   r8   r   rp   r&   r<   rK   r[   r|   r   r   r,   r   r   r   r   r   r   r   r    r=   r;   <module>r      sM    	   
    ? ? 
    77gFWW_FMM'..rww78F?D-*EPTLn7v 	?D
!
%
% $
'
"D)
"D)
"D)
"E*
"G,
"G, ?DNb/++\#46,"r=   