+
    i:                         ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtH	t	 ^ RI
HtHtHtHtHt ^ RIHtHtHtHt ^ RIHt ^ RIHt RR	 ltR
 tR tR tR tR tR tR t R t!R t"R t#R t$R t%R# )    N)StringIO)Path)symbolsEq)autowrapbinary_functionCythonCodeWrapperUfuncifyCodeWrapperCodeWrapper)CCodeGen
C99CodeGenCodeGenArgumentListErrormake_routine)raises)TmpFileManagerc                n    \        4       pV ! WV3/ VB  VP                  4       pVP                  4        V# )a  Wrapper for dump_fn. dump_fn writes its results to a stream object and
this wrapper returns the contents of that stream as a string. This
auxiliary function is used by many tests below.

The header and the empty lines are not generator to facilitate the
testing of the output.
)r   getvalueclose)dump_fnroutinesprefixkwargsoutputsources   &&&,  a/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/utilities/tests/test_autowrap.py
get_stringr      s4     ZFHf//__F
LLNM    c                      \        R 4      w  rpW,           V,          p\        RV4      p\        \        4       4      p\	        VP
                  V.4      pRpWg8X  g   Q hR# )x,y,ztestzcdef extern from 'file.h':
    double test(double x, double y, double z)

def test_c(double x, double y, double z):

    return test(x, y, z)N)r   r   r	   r   r   dump_pyx)xyzexprroutinecode_genr   expecteds           r   #test_cython_wrapper_scalar_functionr)   #   s_    gGA!E19D64(G ,H))G95F	#  r   c                      ^ RI Hp  \        R4      w  rp\        \	        4       4      p\        RV ! W1V,           4      4      p\        VP                  V.4      pRpWg8X  g   Q hR# )r   Equalityr   r    zcdef extern from 'file.h':
    void test(double x, double y, double *z)

def test_c(double x, double y):

    cdef double z = 0
    test(x, y, &z)
    return zNsympy.core.relationalr,   r   r	   r   r   r   r!   r,   r"   r#   r$   r'   r&   r   r(   s           r   test_cython_wrapper_outargr0   4   s`    .gGA! .H68A1u#56G))G95F	  r   c                      ^ RI Hp  \        R4      w  rp\        \	        4       4      p\        RV ! W1V,           V,           4      4      p\        VP                  V.4      pRpWg8X  g   Q hR# )r   r+   r   r    zcdef extern from 'file.h':
    void test(double x, double y, double *z)

def test_c(double x, double y, double z):

    test(x, y, &z)
    return zNr-   r/   s           r   test_cython_wrapper_inoutargr2   G   sd    .gGA! .H68A1uqy#9:G))G95F	  r   c                  h   ^ RI Hp  \        R4      w  rp\        RV ! W1V,           4      4      p\	        \        4       4      pRR\        P                  /,          p\        P                  ! 4       p\        P                  ! V4       \        P                  P                  VR4      pVP                  WGR7       \!        V4      P#                  4       p	W8X  g   Q h\	        \        4       RR	.R
.RR.R.RR.RRR//R7      pRR\        P                  /,          pVP                  WGR7       \!        V4      P#                  4       p	W8X  g   Q hRR\        P                  /,          pRVn        VP                  WGR7       \!        V4      P#                  4       p	W8X  g   Q h\        P&                  ! 4        R# )r   r+   r   r    a  from setuptools import setup
from setuptools import Extension
from Cython.Build import cythonize
cy_opts = {'compiler_directives': {'language_level': '3'}}

ext_mods = [Extension(
    'wrapper_module_%(num)s', ['wrapper_module_%(num)s.pyx', 'wrapped_code_%(num)s.c'],
    include_dirs=[],
    library_dirs=[],
    libraries=[],
    extra_compile_args=['-std=c99'],
    extra_link_args=[]
)]
setup(ext_modules=cythonize(ext_mods, **cy_opts))
numzsetup.py)	build_dirz/usr/local/includez/opt/booger/includez/user/local/libthelibnilibz
-slow-mathz-lswampz	-ltridentcompiler_directivesboundscheckF)include_dirslibrary_dirs	librariesextra_compile_argsextra_link_argscythonize_optionsa)  from setuptools import setup
from setuptools import Extension
from Cython.Build import cythonize
cy_opts = {'compiler_directives': {'boundscheck': False}}

ext_mods = [Extension(
    'wrapper_module_%(num)s', ['wrapper_module_%(num)s.pyx', 'wrapped_code_%(num)s.c'],
    include_dirs=['/usr/local/include', '/opt/booger/include'],
    library_dirs=['/user/local/lib'],
    libraries=['thelib', 'nilib'],
    extra_compile_args=['-slow-math', '-std=c99'],
    extra_link_args=['-lswamp', '-ltrident']
)]
setup(ext_modules=cythonize(ext_mods, **cy_opts))
aN  from setuptools import setup
from setuptools import Extension
from Cython.Build import cythonize
cy_opts = {'compiler_directives': {'boundscheck': False}}
import numpy as np

ext_mods = [Extension(
    'wrapper_module_%(num)s', ['wrapper_module_%(num)s.pyx', 'wrapped_code_%(num)s.c'],
    include_dirs=['/usr/local/include', '/opt/booger/include', np.get_include()],
    library_dirs=['/user/local/lib'],
    libraries=['thelib', 'nilib'],
    extra_compile_args=['-slow-math', '-std=c99'],
    extra_link_args=['-lswamp', '-ltrident']
)]
setup(ext_modules=cythonize(ext_mods, **cy_opts))
TN)r.   r,   r   r   r	   r   r   _module_countertempfilemkdtempr   
tmp_folderospathjoin_prepare_filesr   	read_text_need_numpycleanup)
r,   r"   r#   r$   r&   r'   r(   temp_dirsetup_file_path
setup_texts
             r   !test_cython_wrapper_compile_flagsrN   X   s   .gGA!68A1u#56G ,H k))*+H" !Hh'ggll8Z8OG8o&002J!!! /CEZ.[/@.A,4g+>5AN2;[1I4IM[`Ka3b#H k))*+H" G8o&002J!!!  k))*!+H$  HG8o&002J!!!r   c                  n   ^ RI Hp  ^ RIHp V! R4      V! R4      V! R4      rCpW#V3 Uu. uF  p\	        VP
                  4      NK  	  upw  rgpV ! WBV,           4      p	\        RV	4      p
\        \        4       4      p\        VP                  V
.4      pRpVP                  WgVR7      pW8X  g   Q hR	# u upi )
r   r+   )Dummyr"   r#   r$   r    zcdef extern from 'file.h':
    void test(double x_{x_id}, double y_{y_id}, double *z_{z_id})

def test_c(double x_{x_id}, double y_{y_id}):

    cdef double z_{z_id} = 0
    test(x_{x_id}, y_{y_id}, &z_{z_id})
    return z_{z_id})x_idy_idz_idN)r.   r,   sympy.core.symbolrP   strdummy_indexr   r	   r   r   r!   format)r,   rP   r"   r#   r$   drQ   rR   rS   r%   r&   r'   r   expected_templater(   s                  r   $test_cython_wrapper_unique_dummyvarsrZ      s    .'Cj%*eCj!A561I>IqAMM*I>DA1uD64(G ,H))G95F	  !''T4'HH ?s   B2c                  j   \        R 4      w  rp\        W,           RR7      pV! 4       \        W,           4      8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q h\        \        W V,           4      RR7      pV! 4       \        W,           4      8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q h\        \        W V,           V,           4      RR7      pV! 4       \        W,           V,           4      8X  g   Q hVP                  R8X  g   Q hVP                  R8X  g   Q hR# )x y zdummybackendzx, ynamelessr$   zx, y, zN)r   r   rU   argsreturnsr   )r"   r#   r$   fs       r   test_autowrap_dummyrd      s    gGA! 	(A3#ae*66V99
"""A1uw/A3#ae*66V99A1uqy!73A3#aeai.   66Y99r   c                    aaa \        R 4      w  ooo\        \        VVV3R l4       \        \	        SSS,           4      RSS.R7      p V ! 4       \        SS,           4      8X  g   Q hV P                  R8X  g   Q hV P                  R8X  g   Q h\        \        VVV3R l4       \        \	        SSS,           S,           4      RSSS.R7      p V ! 4       \        SS,           S,           4      8X  g   Q hV P                  R8X  g   Q hV P                  R8X  g   Q h\        \	        SSS,           S,           4      RSSS3R7      p V ! 4       \        SS,           S,           4      8X  g   Q hV P                  R8X  g   Q hV P                  R8X  g   Q hR# )	r\   c                  D   < \        \        SS S,           4      R S .R7      # r]   r_   ra   r   r   r"   r#   r$   s   r   <lambda>$test_autowrap_args.<locals>.<lambda>   s    XbAEl!.&r   r]   rh   zy, xr$   c                  T   < \        \        SS S,           S,           4      R S S.R7      # rg   ri   rj   s   r   rk   rl      s$    XbAEAI6F!Q.)r   zy, x, zN)r   r   r   r   r   rU   ra   rb   )rc   r"   r#   r$   s    @@@r   test_autowrap_argsrn      sQ   gGAq!
# && 'Aq1uwaV<A3#a!e*66V99
# &) *Aq1uqy!7!QCA3#a!eai.   66Y99Aq1uqy!7!QCA3#a!eai.   66Y99r   c                  \   \        R 4      w  r\        P                  ! 4       p\        P                  ! V4       \        W,           RVR7      pV! 4       \        W,           4      8X  g   Q h\        P                  ! V\        P                  4      '       g   Q h\        P                  ! 4        R# )x yr]   r_   tempdirN)r   rA   rB   r   rC   r   rU   rD   accessF_OKrJ   )r"   r#   tmprc   s       r   test_autowrap_store_filesrv      sv    5>DA



Cc"5A3#ae*99S"''""""r   c                     \        R 4      w  rRp\        P                  ! 4       p\        P                  ! 4       p \        P
                  ! V4       \        W,           RVR7      pV! 4       \        W,           4      8X  g   Q h\        P                  ! V\        P                  4      '       g   Q h \        P
                  ! V4       \        P                  ! V4       R#   \        P
                  ! T4       \        P                  ! T4       i ; i)rp   z./tmpr]   rq   N)r   rD   getcwdrA   rB   chdirr   rU   rs   rt   shutilrmtree)r"   r#   ru   	saved_cwdtemp_cwdrc   s         r   'test_autowrap_store_files_issue_gh12939r~      s    5>DA
C		I!H 
QUGS9sc!%j   yybgg&&&&
h 	hs   A1C -C .Dc                      \        R 4      w  r\        RW,           RR7      pVP                  4       \        W,           4      8X  g   Q hR# )rp   rc   r]   r^   N)r   r   _imp_rU   )r"   r#   rc   s      r   test_binary_functionr     s7    5>DAQUG4A779AE
"""r   c                      \        R 4      w  rp\        \        R4      4      p\        RW,           V,           4      p\	        VP
                  V.4      pRR\        P                  /,          pWV8X  g   Q hR# )r   ufuncifyr    af	  #include "Python.h"
#include "math.h"
#include "numpy/ndarraytypes.h"
#include "numpy/ufuncobject.h"
#include "numpy/halffloat.h"
#include "file.h"

static PyMethodDef wrapper_module_%(num)sMethods[] = {
        {NULL, NULL, 0, NULL}
};

#ifdef NPY_1_19_API_VERSION
static void test_ufunc(char **args, const npy_intp *dimensions, const npy_intp* steps, void* data)
#else
static void test_ufunc(char **args, npy_intp *dimensions, npy_intp* steps, void* data)
#endif
{
    npy_intp i;
    npy_intp n = dimensions[0];
    char *in0 = args[0];
    char *in1 = args[1];
    char *in2 = args[2];
    char *out0 = args[3];
    npy_intp in0_step = steps[0];
    npy_intp in1_step = steps[1];
    npy_intp in2_step = steps[2];
    npy_intp out0_step = steps[3];
    for (i = 0; i < n; i++) {
        *((double *)out0) = test(*(double *)in0, *(double *)in1, *(double *)in2);
        in0 += in0_step;
        in1 += in1_step;
        in2 += in2_step;
        out0 += out0_step;
    }
}
PyUFuncGenericFunction test_funcs[1] = {&test_ufunc};
static char test_types[4] = {NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE};
static void *test_data[1] = {NULL};

#if PY_VERSION_HEX >= 0x03000000
static struct PyModuleDef moduledef = {
    PyModuleDef_HEAD_INIT,
    "wrapper_module_%(num)s",
    NULL,
    -1,
    wrapper_module_%(num)sMethods,
    NULL,
    NULL,
    NULL,
    NULL
};

PyMODINIT_FUNC PyInit_wrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = PyModule_Create(&moduledef);
    if (!m) {
        return NULL;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(test_funcs, test_data, test_types, 1, 3, 1,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "test", ufunc0);
    Py_DECREF(ufunc0);
    return m;
}
#else
PyMODINIT_FUNC initwrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = Py_InitModule("wrapper_module_%(num)s", wrapper_module_%(num)sMethods);
    if (m == NULL) {
        return;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(test_funcs, test_data, test_types, 1, 3, 1,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "test", ufunc0);
    Py_DECREF(ufunc0);
}
#endifr4   N)r   r
   r   r   r   dump_cr   r@   )r"   r#   r$   code_wrapperr&   r   r(   s          r   test_ufuncify_sourcer     st    gGA!&z*'=>L61519-G++gY7FW
n K//0oW1Hp r   c            
         \        R 4      w  rpWV3pW^,          ,           ^
V^,          ,          ,           p\        \        R4      4      p\        \	        V4      4       Uu. uF4  p\        RP                  V4      VP                  W6,          4      V4      NK6  	  pp\        VP                  VRR7      pRR\        P                  /,          p	W8X  g   Q hR# u upi )r   r   zfunc{}	multitest)funcnamea  #include "Python.h"
#include "math.h"
#include "numpy/ndarraytypes.h"
#include "numpy/ufuncobject.h"
#include "numpy/halffloat.h"
#include "file.h"

static PyMethodDef wrapper_module_%(num)sMethods[] = {
        {NULL, NULL, 0, NULL}
};

#ifdef NPY_1_19_API_VERSION
static void multitest_ufunc(char **args, const npy_intp *dimensions, const npy_intp* steps, void* data)
#else
static void multitest_ufunc(char **args, npy_intp *dimensions, npy_intp* steps, void* data)
#endif
{
    npy_intp i;
    npy_intp n = dimensions[0];
    char *in0 = args[0];
    char *in1 = args[1];
    char *in2 = args[2];
    char *out0 = args[3];
    char *out1 = args[4];
    char *out2 = args[5];
    npy_intp in0_step = steps[0];
    npy_intp in1_step = steps[1];
    npy_intp in2_step = steps[2];
    npy_intp out0_step = steps[3];
    npy_intp out1_step = steps[4];
    npy_intp out2_step = steps[5];
    for (i = 0; i < n; i++) {
        *((double *)out0) = func0(*(double *)in0, *(double *)in1, *(double *)in2);
        *((double *)out1) = func1(*(double *)in0, *(double *)in1, *(double *)in2);
        *((double *)out2) = func2(*(double *)in0, *(double *)in1, *(double *)in2);
        in0 += in0_step;
        in1 += in1_step;
        in2 += in2_step;
        out0 += out0_step;
        out1 += out1_step;
        out2 += out2_step;
    }
}
PyUFuncGenericFunction multitest_funcs[1] = {&multitest_ufunc};
static char multitest_types[6] = {NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE};
static void *multitest_data[1] = {NULL};

#if PY_VERSION_HEX >= 0x03000000
static struct PyModuleDef moduledef = {
    PyModuleDef_HEAD_INIT,
    "wrapper_module_%(num)s",
    NULL,
    -1,
    wrapper_module_%(num)sMethods,
    NULL,
    NULL,
    NULL,
    NULL
};

PyMODINIT_FUNC PyInit_wrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = PyModule_Create(&moduledef);
    if (!m) {
        return NULL;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(multitest_funcs, multitest_data, multitest_types, 1, 3, 3,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "multitest", ufunc0);
    Py_DECREF(ufunc0);
    return m;
}
#else
PyMODINIT_FUNC initwrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = Py_InitModule("wrapper_module_%(num)s", wrapper_module_%(num)sMethods);
    if (m == NULL) {
        return;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(multitest_funcs, multitest_data, multitest_types, 1, 3, 3,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "multitest", ufunc0);
    Py_DECREF(ufunc0);
}
#endifr4   N)r   r
   r   rangelenr   rW   diffr   r   r   r@   )
r"   r#   r$   var_symbolsr%   r   ir   r   r(   s
             r    test_ufuncify_source_multioutputr   l  s    gGA!)K!t8bAgD&z*'=>Lbghklwhxbyzby]^X__Q/;>1JKXbyHz++XLF_
~ K//0_1H@ E {s   !:C)file)&rD   rA   rz   ior   pathlibr   
sympy.corer   r   sympy.utilities.autowrapr   r   r	   r
   r   sympy.utilities.codegenr   r   r   r   sympy.testing.pytestr   sympy.testing.tmpfilesr   r   r)   r0   r2   rN   rZ   rd   rn   rv   r~   r   r   r    r   r   <module>r      s}    
     "A A  ( 1"&"Tl*&,	 #]@gr   