Ë
    7^(h:  ã                   óà   — 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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 d dlmZ d dlmZ 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%y)é    N)ÚStringIO)ÚPath)ÚsymbolsÚEq)ÚautowrapÚbinary_functionÚCythonCodeWrapperÚUfuncifyCodeWrapperÚCodeWrapper)ÚCCodeGenÚ
C99CodeGenÚCodeGenArgumentListErrorÚmake_routine)Úraises)ÚTmpFileManagerc                 óp   — t        «       } | |||fi |¤Ž |j                  «       }|j                  «        |S )a5  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/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/utilities/tests/test_autowrap.pyÚ
get_stringr      s6   € ô ‹Z€FÙˆH�f˜fÑ/¨Ò/Ø�_‰_Ó€FØ
‡L�L„NØ€Mó    c                  ó°   — t        d«      \  } }}| |z   |z  }t        d|«      }t        t        «       «      }t	        |j
                  |g«      }d}||k(  sJ ‚y )Núx,y,zÚtestz�cdef 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))r   r   r	   r   r   Údump_pyx)ÚxÚyÚzÚexprÚroutineÚcode_genr   Úexpecteds           r   Ú#test_cython_wrapper_scalar_functionr)   #   se   € Ü�gÓ�G€A€qˆ!Ø�‰E�1‰9€DÜ˜6 4Ó(€GÜ ¤£Ó,€HÜ˜×)Ñ)¨G¨9Ó5€Fð	#ð ð �XÒÐÑr   c                  óÀ   — ddl m}  t        d«      \  }}}t        t	        «       «      }t        d | |||z   «      «      }t        |j                  |g«      }d}||k(  sJ ‚y )Nr   ©ÚEqualityr   r    zŸcdef 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 z©Úsympy.core.relationalr,   r   r	   r   r   r   r!   ©r,   r"   r#   r$   r'   r&   r   r(   s           r   Útest_cython_wrapper_outargr0   4   sf   € Ý.Ü�gÓ�G€A€qˆ!Ü ¤£Ó.€Hä˜6¡8¨A¨q°1©uÓ#5Ó6€GÜ˜×)Ñ)¨G¨9Ó5€Fð	ð ð �XÒÐÑr   c                  óÆ   — ddl m}  t        d«      \  }}}t        t	        «       «      }t        d | |||z   |z   «      «      }t        |j                  |g«      }d}||k(  sJ ‚y )Nr   r+   r   r    z“cdef 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 zr-   r/   s           r   Útest_cython_wrapper_inoutargr2   G   sj   € Ý.Ü�gÓ�G€A€qˆ!Ü ¤£Ó.€HÜ˜6¡8¨A¨q°1©u°q©yÓ#9Ó:€GÜ˜×)Ñ)¨G¨9Ó5€Fð	ð ð �XÒÐÑr   c                  óD  — ddl m}  t        d«      \  }}}t        d | |||z   «      «      }t	        t        «       «      }ddt        j                  iz  }t        j                  «       }t        j                  |«       t        j                  j                  |d«      }|j                  ||¬«       t!        |«      j#                  «       }	|	|k(  sJ ‚t	        t        «       d	d
gdgddgdgddgdddii¬«      }ddt        j                  iz  }|j                  ||¬«       t!        |«      j#                  «       }	|	|k(  sJ ‚ddt        j                  iz  }d|_        |j                  ||¬«       t!        |«      j#                  «       }	|	|k(  sJ ‚t        j&                  «        y )Nr   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))
T)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Ó�G€A€qˆ!Ü˜6¡8¨A¨q°1©uÓ#5Ó6€Gä ¤£Ó,€Hðð Œk×)Ñ)Ð*ñ+€Hô" ×ÑÓ!€HÜ×Ñ˜hÔ'Ü—g‘g—l‘l 8¨ZÓ8€Oà×Ñ˜G¨xÐÔ8Ü�oÓ&×0Ñ0Ó2€JØ˜Ò!Ð!Ð!ä ¤£Ø/CÐEZÐ.[Ø/@Ð.AØ,4°gÐ+>Ø5A°NØ2;¸[Ð1IØ4IÈMÐ[`ÐKaÐ3bô#€Hðð Œk×)Ñ)Ð*ñ+€Hð" ×Ñ˜G¨xÐÔ8Ü�oÓ&×0Ñ0Ó2€JØ˜Ò!Ð!Ð!ðð  Œk×)Ñ)Ð*ñ!+€Hð$  €HÔØ×Ñ˜G¨xÐÔ8Ü�oÓ&×0Ñ0Ó2€JØ˜Ò!Ð!Ð!ä×ÑÕr   c                  óh  — ddl m}  ddlm}  |d«       |d«       |d«      }}}|||fD �cg c]  }t	        |j
                  «      ‘Œ c}\  }}} | |||z   «      }	t        d|	«      }
t        t        «       «      }t        |j                  |
g«      }d}|j                  |||¬	«      }||k(  sJ ‚y c c}w )
Nr   r+   )ÚDummyr"   r#   r$   r    zåcdef 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_id)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¹   € Ý.Ý'Ù�C‹j™% ›*¡e¨C£jˆ!€q€AØ56¸¸1°IÖ>¨qœ˜AŸM™MÕ*Ò>Ñ€Dˆ$�Ù�A�q˜1‘uÓ€DÜ˜6 4Ó(€GÜ ¤£Ó,€HÜ˜×)Ñ)¨G¨9Ó5€Fð	ð ð !×'Ñ'¨T¸À4Ð'ÓH€HØ�XÒÐÑùò ?s   ¬B/c                  ó  — t        d«      \  } }}t        | |z   d¬«      } |«       t        | |z   «      k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        t        || |z   «      d¬«      } |«       t        | |z   «      k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        t        || |z   |z   «      d¬«      } |«       t        | |z   |z   «      k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Núx y zÚdummy©Úbackendzx, yÚnamelessr$   zx, y, z)r   r   rU   ÚargsÚreturnsr   )r"   r#   r$   Úfs       r   Útest_autowrap_dummyrd   Ã   s  € Ü�gÓ�G€A€qˆ!ô 	��Q‘ Ô(€AÙ‹3”#�a˜!‘e“*ÒÐÐØ�6‰6�VÒÐÐØ�9‰9˜
Ò"Ð"Ð"Ü”�A�q˜1‘u“ wÔ/€AÙ‹3”#�a˜!‘e“*ÒÐÐØ�6‰6�VÒÐÐØ�9‰9˜ÒÐÐÜ”�A�q˜1‘u˜q‘yÓ!¨7Ô3€AÙ‹3”#�a˜!‘e˜a‘i“.Ò Ð Ð Ø�6‰6�YÒÐÐØ�9‰9˜ÒÐÑr   c                  ó¢  ‡‡‡— t        d«      \  ŠŠŠt        t        ˆˆˆfd„«       t        t	        ‰‰‰z   «      d‰‰g¬«      }  | «       t        ‰‰z   «      k(  sJ ‚| j                  dk(  sJ ‚| j                  dk(  sJ ‚t        t        ˆˆˆfd„«       t        t	        ‰‰‰z   ‰z   «      d‰‰‰g¬«      }  | «       t        ‰‰z   ‰z   «      k(  sJ ‚| j                  dk(  sJ ‚| j                  dk(  sJ ‚t        t	        ‰‰‰z   ‰z   «      d‰‰‰f¬«      }  | «       t        ‰‰z   ‰z   «      k(  sJ ‚| j                  dk(  sJ ‚| j                  dk(  sJ ‚y )	Nr\   c                  ó<   •— t        t        ‰‰ ‰z   «      d‰ g¬«      S ©Nr]   ©r_   ra   ©r   r   ©r"   r#   r$   s   €€€r   ú<lambda>z$test_autowrap_args.<locals>.<lambda>Ù   s   ø€ ¬X´b¸¸AÀ¹E³lØ ! ô.&€ r   r]   rh   zy, xr$   c                  óD   •— t        t        ‰‰ ‰z   ‰z   «      d‰ ‰g¬«      S rg   ri   rj   s   €€€r   rk   z$test_autowrap_args.<locals>.<lambda>à   s&   ø€ ¬X´b¸¸AÀ¹EÀA¹IÓ6FØ ! Q ô.)€ r   zy, x, z)r   r   r   r   r   rU   ra   rb   )rc   r"   r#   r$   s    @@@r   Útest_autowrap_argsrm   Ö   sQ  ú€ Ü�gÓ�G€A€qˆ!ä
Ô#õ &&ô 'ä”�A�q˜1‘u“ w°a¸°VÔ<€AÙ‹3”#�a˜!‘e“*ÒÐÐØ�6‰6�VÒÐÐØ�9‰9˜ÒÐÐä
Ô#õ &)ô *ä”�A�q˜1‘u˜q‘yÓ!¨7¸!¸QÀ¸ÔC€AÙ‹3”#�a˜!‘e˜a‘i“.Ò Ð Ð Ø�6‰6�YÒÐÐØ�9‰9˜ÒÐÐä”�A�q˜1‘u˜q‘yÓ!¨7¸!¸QÀ¸ÔC€AÙ‹3”#�a˜!‘e˜a‘i“.Ò Ð Ð Ø�6‰6�YÒÐÐØ�9‰9˜ÒÐÑr   c                  ó8  — t        d«      \  } }t        j                  «       }t        j                  |«       t        | |z   d|¬«      } |«       t        | |z   «      k(  sJ ‚t        j                  |t        j                  «      sJ ‚t        j                  «        y )Núx yr]   ©r_   Útempdir)r   rA   rB   r   rC   r   rU   rD   ÚaccessÚF_OKrJ   )r"   r#   Útmprc   s       r   Útest_autowrap_store_filesru   ì   sy   € Ü�5‹>�D€A€qÜ
×
Ñ
Ó
€CÜ×Ñ˜cÔ"ä��Q‘ °Ô5€AÙ‹3”#�a˜!‘e“*ÒÐÐÜ�9‰9�Sœ"Ÿ'™'Ô"Ð"Ð"ä×ÑÕr   c                  óò  — t        d«      \  } }d}t        j                  «       }t        j                  «       }	 t        j
                  |«       t        | |z   d|¬«      } |«       t        | |z   «      k(  sJ ‚t        j                  |t        j                  «      sJ ‚	 t        j
                  |«       t        j                  |«       y # t        j
                  |«       t        j                  |«       w xY w)Nro   z./tmpr]   rp   )r   rD   ÚgetcwdrA   rB   Úchdirr   rU   rr   rs   ÚshutilÚrmtree)r"   r#   rt   Ú	saved_cwdÚtemp_cwdrc   s         r   Ú'test_autowrap_store_files_issue_gh12939r}   ÷   s´   € Ü�5‹>�D€A€qØ
€CÜ—	‘	“€IÜ×ÑÓ!€Hð Ü
�‰�ÔÜ�Q˜‘U G°SÔ9ˆÙ‹s”c˜!˜a™%“jÒ Ð Ð Ü�y‰y˜œbŸg™gÔ&Ð&Ñ&ä
�‰�ÔÜ�‰�hÕøô 	�‰�ÔÜ�‰�hÕús   ºA$C
 Ã
,C6c                  ó„   — t        d«      \  } }t        d| |z   d¬«      }|j                  «       t        | |z   «      k(  sJ ‚y )Nro   rc   r]   r^   )r   r   Ú_imp_rU   )r"   r#   rc   s      r   Útest_binary_functionr€     s=   € Ü�5‹>�D€A€qÜ˜˜Q ™U¨GÔ4€AØ�7‰7‹9œ˜A ™E›
Ò"Ð"Ñ"r   c                  óÔ   — t        d«      \  } }}t        t        d«      «      }t        d| |z   |z   «      }t	        |j
                  |g«      }ddt        j                  iz  }||k(  sJ ‚y )Nr   Ú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   )r   r
   r   r   r   Údump_cr   r@   )r"   r#   r$   Úcode_wrapperr&   r   r(   s          r   Útest_ufuncify_sourcer…     sz   € Ü�gÓ�G€A€qˆ!Ü&¤z°*Ó'=Ó>€LÜ˜6 1 q¡5¨1¡9Ó-€GÜ˜×+Ñ+¨g¨YÓ7€FðW
ðn ”K×/Ñ/Ð0ñoW1€Hðp �XÒÐÑr   c            
      ó‚  — t        d«      \  } }}| ||f}| |dz  z   d|dz  z  z   }t        t        d«      «      }t        t	        |«      «      D �cg c]0  }t        dj                  |«      |j                  ||   «      |«      ‘Œ2 }}t        |j                  |d¬«      }d	d
t        j                  iz  }	||	k(  sJ ‚y c c}w )Nr   é   é
   é   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   )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Ó�G€A€qˆ!Ø�a˜�)€KØˆq�!‰t‰8�b˜˜A™‘gÑ€DÜ&¤z°*Ó'=Ó>€LÜbgÔhkÐlwÓhxÓbyÖzÐ]^”˜XŸ_™_¨QÓ/°·±¸;Àq¹>Ó1JÈKÕXÐz€HÐzÜ˜×+Ñ+¨XÀÔL€Fð_
ð~ ”K×/Ñ/Ð0ñ_1€Hð@ �XÒÐÑùòE {s   Á5B<)Úfile)&rD   rA   ry   Ú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   rm   ru   r}   r€   r…   r‘   © r   r   ú<module>r›      s}   ðó 
Û Û Ý Ý ç "÷Aõ A÷ó õ (Ý 1óòò"ò&ò"Tòlò*ò&ò,	ò ò#ò]ó@gr   