For binary distributions remember to set the environment vraiable PYTHONPATH to the directories containing the Singular python modules (interpreter.py, utils.py, usually the Singular LIB directory) and to your python directory (usually .) Example for bash etc.: export PYTHONPATH=".:/usr/local/Singular/3-0-2/LIB" Requirements for building: -------------------------- install scons (the build tool) install boost::python install boost dynamic modules working have a working Singular build directory NOSTREAMIO disabled in factory (rebuild also claptmpl.o in Singular) install python-numeric (for matrix report) Suggested additional modules: probstat: fast (C-Impl.) combinatorics (permutations, cartesian products) lxml for openmath supported interpreter values: INPUT: int poly vector number matrix ideal list string ring intvec Output: int poly vector number matrix ideal list string ring intvec typemappings: interpreter, python internal, python official name int -> int poly -> Poly ->Polynomial vector -> Vector -> Vector number -> Number ->Number matrix -> Numeric.array ideal -> Ideal ->Ideal list -> list string -> str ring -> ring(in a Ring, but this does nothing) ->ring BUILD: -------- just type: scons adjust PYTHONPATH: ----------------- python must be able to find interpreter.py so either export PYTHONPATH="/modules/python" but for me simply export PYTHONPATH= also works Test: ----- ../../Singular/Singular where testfile is in powertester polytester interpretertester if an exceptions occurs, review the code it may be wanted for examples the last line in interpretertester TASKS: ------ - push and pop rings, automatically change rings, if Singular functions are executed -Map more types -throw Python exception if something fails -testing -write some module presenting the power of python compared to the Singular interpreter language - make modgen work properly - make the functionality available build in the kernel for the windows platform - documentation - provide feedback for missing functionality -smart pointer for ring in Poly RULES: ----- If you want to help, which would make me happy, follow some simple rules: - divide the work in layers, so what is a problem of a better C++-Interface should be done in the Singular kernel (compare Number.h, Poly.h PowerSeries.h), the Pythonwrapper itself should be ultrathin -raw operations (+,-,* creation of res...) should map directly to the Singular kernel (prefereable nice C++ wrapper classes in the kernel) - Wrapper classes in C++ should behave like canonical C++-Classes, no additional res.-management (with the exception of new, delete) should be required - never use currRing implicitly, always write out the currRing argument, if this isn't done consequently in my code, it would be nice of you to fix it - regularly check in, check out from CVS NEWS: *global_functions has be renamed to singular_globals_proxy the old name exists for short time for compat. *it is now possible to use the singular_globals_proxy for -reading global variables -writing global variables, if the var exists with the correct type in the interpreter -calling global interpreter and builtin functions (not builtins, for example groebner but not std successfully tested systems: linux: x86, x86_64 Mac OS X:G4, windows (ask Oliver)