Using MPolynomial_libsingular in Cython code    
   I wrote some Sage code to deal with multivariate polynomials (over QQ say). In order to increase performances, I tried to cythonize the file, and in particular to add static types. I was able to add types for basic types (such as int or list¹) but I am not able to use the type MPolynomial_libsingular. I tried to import Mpolynomial_libsingular with either import or cimport. A minimal example (file named essai.spyx):
from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomial_libsingular # or cimport
cpdef MPolynomial_libsingular dummy(MPolynomial_libsingular p):
    return p
I give below the result I get when I call sage essai.spyx, first with import and then with cimport:
- With - import:- Compiling essai.spyx... Traceback (most recent call last): File "/home/bruno/Software/sage/src/bin/sage-run-cython", line 8, in <module> s = load_cython(sys.argv.pop(1)) File "/home/bruno/Software/sage/local/lib/python2.7/site-packages/sage/repl/load.py", line 65, in load_cython mod, dir = cython(name, compile_message=True, use_cache=True) File "/home/bruno/Software/sage/local/lib/python2.7/site-packages/sage/misc/cython.py", line 469, in cython raise RuntimeError("Error converting {} to C:\n{}\n{}".format(filename, log, err)) RuntimeError: Error converting essai.spyx to C: Error compiling Cython file: ------------------------------------------------------------ ... include "cysignals/signals.pxi" # ctrl-c interrupt block support include "stdsage.pxi" include "cdefs.pxi" from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomial_libsingular cpdef MPolynomial_libsingular dummy(MPolynomial_libsingular p): ^ ------------------------------------------------------------ _home_bruno_Recherche_Sage_LinearFactors_essai_spyx_0.pyx:7:6: 'MPolynomial_libsingular' is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... include "cysignals/signals.pxi" # ctrl-c interrupt block support include "stdsage.pxi" include "cdefs.pxi" from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomial_libsingular cpdef MPolynomial_libsingular dummy(MPolynomial_libsingular p): ^ ------------------------------------------------------------ _home_bruno_Recherche_Sage_LinearFactors_essai_spyx_0.pyx:7:36: 'MPolynomial_libsingular' is not a type identifier
- With - cimport, I get also a- RuntimeError, but with many more errors. You can read the complete log file. Here is an excerpt:- In file included from /home/bruno/Software/sage/local/include/factory/factory.h:45:0, from /home/bruno/Software/sage/local/include/factor.h:8, from _home_bruno_Recherche_Sage_LinearFactors_essai_spyx_0.c:249: /home/bruno/Software/sage/local/include/factory/templates/ftmpl_array.h:19:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token template <class T> ^
Question: What am I doing wrong, and what is the correct way of cythonizing such a file?
¹ An aside question: Is there a way to specify the type of elements in a list? Something like list<int> (this does not work)?
