Alternate string object type for PyStringObject(available Python 2.x) in python 3.x?
What is the replacement in python 3.x for PyStringObject which is available in python 2.x? -- http://mail.python.org/mailman/listinfo/python-list
Is there conversion method to convert pyunicodeobject to pybyteobject?
Hi All, A variable whose data type is PyUnicodeObject is to be assigned to varioable of PyBytesObject type example : PyUnicodeObject *p = ...whatever...; function( (PyByteObject*p)); compiled and got a Bus Error. Cheers, Mathan -- http://mail.python.org/mailman/listinfo/python-list
Getting System error with PyModule_AddIntConstant funtion
Following is a Python C api which runs properly without PyModule_AddIntConstant function. But when PyModule_AddIntConstant() function is used, getting the following error when i call c. path("test call"); " SystemError: NULL result without error in PyObject_Call " Python C api- c.c int test(int a){ return (2*a+a); } PyObject* dict = NULL; static PyObject* path(PyObject* self, PyObject* args) { char *cpath; PyUnicodeObject *path; PyUnicodeObject *test; if (!PyArg_ParseTuple(args, "s", &path)) return NULL; cpath = (char *)path; test = (PyUnicodeObject*)(cpath); PyObject *testDict = PyDict_New(); int testVal = PyDict_SetItem(testDict, (PyObject *)PyUnicode_FromString(cpath), (PyObject *)PyUnicode_FromString(cpath)); return Py_BuildValue("s", test); } static PyObject* c(PyObject* self, PyObject* args) { int a; int result; if(!PyArg_ParseTuple(args, "i", &a)) return NULL; result = test(a); return Py_BuildValue("i", result); } static PyMethodDef cmethods[] = { {"c", c, METH_VARARGS, "watch"}, {"path", path, METH_VARARGS, "test"}, {NULL, NULL, 0, NULL}, }; static struct PyModuleDef c_Module = { PyModuleDef_HEAD_INIT, "c", ( "Interface." ), -1, cmethods }; PyMODINIT_FUNC PyInit_c(void) { PyObject* obj = PyModule_Create(&c_Module); long lon1 = 0; PyModule_AddIntConstant(obj, "test", lon1); } int main(int argc, wchar_t *argv[]) { PyImport_AppendInittab("c", PyInit_c); Py_SetProgramName(argv[0]); Py_Initialize(); PyImport_ImportModule("c"); return 0; } -- http://mail.python.org/mailman/listinfo/python-list
Re: Getting System error with PyModule_AddIntConstant funtion
I checked for Null also. But No change in the result. Still getting the system error. But when i m calling only c.c(5) function and not calling c.path("hi python c api") function, i m getting proper output without any system error. Any clue? Subject: Re: Getting System error with PyModule_AddIntConstant funtion From: Philip Semanchuk <phi...@semanchuk.com> Date: Tue, 18 May 2010 11:50:46 -0400 To: "python-list (General)" <python-list@python.org> - Contents - On May 18, 2010, at 11:41 AM, MathanK wrote: > Following is a Python C api which runs properly without > PyModule_AddIntConstant function. > > > But when PyModule_AddIntConstant() function is used, getting the > following error when i call > c. path("test call"); > " SystemError: NULL result without error in PyObject_Call " Hi Mathan, You're not checking the return code from PyModule_Create(). Is it returning NULL? Also, there's a list specific to Python's C API. You might get a better response to your question there: http://mail.python.org/mailman/listinfo/capi-sig bye Philip > > > Python C api- c.c > > > int test(int a){ > return (2*a+a); > } > > > PyObject* dict = NULL; > > > static PyObject* path(PyObject* self, PyObject* args) { > char *cpath; > PyUnicodeObject *path; > PyUnicodeObject *test; > > > if (!PyArg_ParseTuple(args, "s", &path)) > return NULL; > cpath = (char *)path; > test = (PyUnicodeObject*)(cpath); > PyObject *testDict = PyDict_New(); > int testVal = PyDict_SetItem(testDict, (PyObject > *)PyUnicode_FromString(cpath), (PyObject > *)PyUnicode_FromString(cpath)); > > return Py_BuildValue("s", test); > } > static PyObject* c(PyObject* self, PyObject* args) { > > int a; > int result; > if(!PyArg_ParseTuple(args, "i", &a)) > return NULL; > result = test(a); > return Py_BuildValue("i", result); > > } > > > static PyMethodDef cmethods[] = { > {"c", c, METH_VARARGS, "watch"}, > {"path", path, METH_VARARGS, "test"}, > {NULL, NULL, 0, NULL}, > }; > > > static struct PyModuleDef c_Module = { > PyModuleDef_HEAD_INIT, > "c", > ( > "Interface." > ), > -1, > cmethods > }; > > > PyMODINIT_FUNC PyInit_c(void) { > > PyObject* obj = PyModule_Create(&c_Module); > long lon1 = 0; > PyModule_AddIntConstant(obj, "test", lon1); > > } > > > int main(int argc, wchar_t *argv[]) > { > PyImport_AppendInittab("c", PyInit_c); > Py_SetProgramName(argv[0]); > Py_Initialize(); > PyImport_ImportModule("c"); > return 0; > } -- http://mail.python.org/mailman/listinfo/python-list
Re: Is there conversion method to convert pyunicodeobject to pybyteobject?
Got it worked with the following change. PyUnicodeObject *p = ...whatever...; char* tmp = (char *)p; PyObject* arg = PyBytes_FromString (tmp); function( (PyBytesObject*) arg); >From : MathanK<switch2mat...@gmail.com> To : "python-list" <python-list@python.org> Date : Sat, 15 May 2010 02:50:22 -1200 Subject : Is there conversion method to convert pyunicodeobject to pybyteobject? Hi All, A variable whose data type is PyUnicodeObject is to be assigned to varioable of PyBytesObject type example : void function( (PyBytesObject* byte){} PyUnicodeObject *p = ...whatever...; function( (PyBytesObject*)p); compiled and got a Bus Error. Cheers, Mathan -- http://mail.python.org/mailman/listinfo/python-list