Hi,
I decided to take python-ldap-2.3.13 few days ago and I made som changes to get it work on python3. Now I have working version for python3 (tested on Ubuntu 10.4 LTS x64 and Debian Squeeze x64). You can try it. It can be start point for new branche of python-ldap-py3. I made only few tests (bind,search,del,add) - successfully. Regards, Dusan
diff -Nuar python-ldap-2.3.13-2.x/Lib/ldap/controls.py python-ldap-2.3.13/Lib/ldap/controls.py --- python-ldap-2.3.13-2.x/Lib/ldap/controls.py 2009-10-30 14:20:47.000000000 +0100 +++ python-ldap-2.3.13/Lib/ldap/controls.py 2011-02-23 17:12:55.911509230 +0100 @@ -17,7 +17,7 @@ ] -from types import ClassType +ClassType = type import _ldap,ldap diff -Nuar python-ldap-2.3.13-2.x/Lib/ldap/schema/models.py python-ldap-2.3.13/Lib/ldap/schema/models.py --- python-ldap-2.3.13-2.x/Lib/ldap/schema/models.py 2011-02-19 21:51:43.000000000 +0100 +++ python-ldap-2.3.13/Lib/ldap/schema/models.py 2011-02-23 17:12:55.911509230 +0100 @@ -12,11 +12,13 @@ from ldap.schema.tokenizer import split_tokens,extract_tokens if __debug__: - from types import TupleType,StringType,IntType + TupleType = tuple + StringType = bytes + IntType = int try: - from types import BooleanType + BooleanType = bool except ImportError: - BooleanType = IntType + BooleanType = int NOT_HUMAN_READABLE_LDAP_SYNTAXES = { @@ -532,7 +534,7 @@ return '( %s )' % ''.join(result) -class Entry(UserDict.UserDict): +class Entry(UserDict): """ Schema-aware implementation of an LDAP entry class. @@ -545,7 +547,7 @@ self._attrtype2keytuple = {} self._s = schema self.dn = dn - UserDict.UserDict.__init__(self,{}) + UserDict.__init__(self,{}) self.update(entry) def _at2key(self,nameoroid): diff -Nuar python-ldap-2.3.13-2.x/Lib/ldap/schema/subentry.py python-ldap-2.3.13/Lib/ldap/schema/subentry.py --- python-ldap-2.3.13-2.x/Lib/ldap/schema/subentry.py 2011-02-19 21:52:14.000000000 +0100 +++ python-ldap-2.3.13/Lib/ldap/schema/subentry.py 2011-02-23 17:12:55.911509230 +0100 @@ -10,7 +10,7 @@ from ldap.schema.models import * -from UserDict import UserDict +from collections import UserDict SCHEMA_CLASS_MAPPING = ldap.cidict.cidict() SCHEMA_ATTR_MAPPING = {} diff -Nuar python-ldap-2.3.13-2.x/Modules/berval.c python-ldap-2.3.13/Modules/berval.c --- python-ldap-2.3.13-2.x/Modules/berval.c 2009-08-17 03:49:47.000000000 +0200 +++ python-ldap-2.3.13/Modules/berval.c 2011-02-23 17:12:55.911509230 +0100 @@ -90,7 +90,7 @@ Py_INCREF(ret); } else { - ret = PyString_FromStringAndSize(bv->bv_val, bv->bv_len); + ret = PyBytes_FromStringAndSize(bv->bv_val, bv->bv_len); } return ret; diff -Nuar python-ldap-2.3.13-2.x/Modules/constants.c python-ldap-2.3.13/Modules/constants.c --- python-ldap-2.3.13-2.x/Modules/constants.c 2011-01-06 16:20:59.000000000 +0100 +++ python-ldap-2.3.13/Modules/constants.c 2011-02-23 17:12:55.911509230 +0100 @@ -14,7 +14,7 @@ PyObject* LDAPconstant( int val ) { - PyObject *i = PyInt_FromLong( val ); + PyObject *i = PyLong_FromLong( val ); PyObject *s = PyObject_GetItem( reverse, i ); if (s == NULL) { PyErr_Clear(); @@ -39,7 +39,7 @@ #define add_int(d, name) \ { \ - PyObject *i = PyInt_FromLong(LDAP_##name); \ + PyObject *i = PyLong_FromLong(LDAP_##name); \ PyDict_SetItemString( d, #name, i ); \ Py_DECREF(i); \ } @@ -92,7 +92,7 @@ /* reversibles */ - zero = PyInt_FromLong( 0 ); + zero = PyLong_FromLong( 0 ); PyDict_SetItem( reverse, zero, Py_None ); Py_DECREF( zero ); @@ -246,11 +246,11 @@ add_int(d,AVA_NONPRINTABLE); /*add_int(d,OPT_ON);*/ - obj = PyInt_FromLong(1); + obj = PyLong_FromLong(1); PyDict_SetItemString( d, "OPT_ON", obj ); Py_DECREF(obj); /*add_int(d,OPT_OFF);*/ - obj = PyInt_FromLong(0); + obj = PyLong_FromLong(0); PyDict_SetItemString( d, "OPT_OFF", obj ); Py_DECREF(obj); @@ -263,42 +263,42 @@ /* author */ - author = PyString_FromString("python-ldap-...@lists.sf.net"); + author = PyBytes_FromString("python-ldap-...@lists.sf.net"); PyDict_SetItemString(d, "__author__", author); Py_DECREF(author); /* add_int(d,LIBLDAP_R); */ #ifdef HAVE_LIBLDAP_R - obj = PyInt_FromLong(1); + obj = PyLong_FromLong(1); #else - obj = PyInt_FromLong(0); + obj = PyLong_FromLong(0); #endif PyDict_SetItemString( d, "LIBLDAP_R", obj ); Py_DECREF(obj); /* add_int(d,SASL); */ #ifdef HAVE_SASL - obj = PyInt_FromLong(1); + obj = PyLong_FromLong(1); #else - obj = PyInt_FromLong(0); + obj = PyLong_FromLong(0); #endif PyDict_SetItemString( d, "SASL_AVAIL", obj ); Py_DECREF(obj); /* add_int(d,TLS); */ #ifdef HAVE_TLS - obj = PyInt_FromLong(1); + obj = PyLong_FromLong(1); #else - obj = PyInt_FromLong(0); + obj = PyLong_FromLong(0); #endif PyDict_SetItemString( d, "TLS_AVAIL", obj ); Py_DECREF(obj); - obj = PyString_FromString(LDAP_CONTROL_PAGE_OID); + obj = PyBytes_FromString(LDAP_CONTROL_PAGE_OID); PyDict_SetItemString( d, "LDAP_CONTROL_PAGE_OID", obj ); Py_DECREF(obj); - obj = PyString_FromString(LDAP_CONTROL_VALUESRETURNFILTER); + obj = PyBytes_FromString(LDAP_CONTROL_VALUESRETURNFILTER); PyDict_SetItemString( d, "LDAP_CONTROL_VALUESRETURNFILTER", obj ); Py_DECREF(obj); diff -Nuar python-ldap-2.3.13-2.x/Modules/errors.c python-ldap-2.3.13/Modules/errors.c --- python-ldap-2.3.13-2.x/Modules/errors.c 2009-04-30 15:03:46.000000000 +0200 +++ python-ldap-2.3.13/Modules/errors.c 2011-02-23 17:12:55.911509230 +0100 @@ -75,7 +75,7 @@ if (info == NULL) return NULL; - str = PyString_FromString(ldap_err2string(errnum)); + str = PyBytes_FromString(ldap_err2string(errnum)); if (str) PyDict_SetItemString( info, "desc", str ); Py_XDECREF(str); @@ -83,7 +83,7 @@ if (ldap_get_option(l, LDAP_OPT_MATCHED_DN, &matched) >= 0 && matched != NULL) { if (*matched != '\0') { - str = PyString_FromString(matched); + str = PyBytes_FromString(matched); if (str) PyDict_SetItemString( info, "matched", str ); Py_XDECREF(str); @@ -92,14 +92,14 @@ } if (errnum == LDAP_REFERRAL) { - str = PyString_FromString(msg); + str = PyBytes_FromString(msg); if (str) PyDict_SetItemString( info, "info", str ); Py_XDECREF(str); } else if (ldap_get_option(l, LDAP_OPT_ERROR_STRING, &error) >= 0 && error != NULL) { if (error != '\0') { - str = PyString_FromString(error); + str = PyBytes_FromString(error); if (str) PyDict_SetItemString( info, "info", str ); Py_XDECREF(str); diff -Nuar python-ldap-2.3.13-2.x/Modules/ldapcontrol.c python-ldap-2.3.13/Modules/ldapcontrol.c --- python-ldap-2.3.13-2.x/Modules/ldapcontrol.c 2009-10-30 14:20:47.000000000 +0100 +++ python-ldap-2.3.13/Modules/ldapcontrol.c 2011-02-23 17:12:55.911509230 +0100 @@ -103,9 +103,9 @@ berbytes.bv_len = 0; berbytes.bv_val = NULL; } - else if (PyString_Check(bytes)) { - berbytes.bv_len = PyString_Size(bytes); - berbytes.bv_val = PyString_AsString(bytes); + else if (PyBytes_Check(bytes)) { + berbytes.bv_len = PyBytes_Size(bytes); + berbytes.bv_val = PyBytes_AsString(bytes); } else { PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO", diff -Nuar python-ldap-2.3.13-2.x/Modules/ldapmodule.c python-ldap-2.3.13/Modules/ldapmodule.c --- python-ldap-2.3.13-2.x/Modules/ldapmodule.c 2009-04-30 15:03:46.000000000 +0200 +++ python-ldap-2.3.13/Modules/ldapmodule.c 2011-02-23 17:12:55.911509230 +0100 @@ -11,7 +11,7 @@ #include "LDAPObject.h" -DL_EXPORT(void) init_ldap(void); +PyMODINIT_FUNC PyInit__ldap(void); /* dummy module methods */ @@ -19,10 +19,18 @@ { NULL, NULL } }; +static struct PyModuleDef moduleDef = { + PyModuleDef_HEAD_INIT, + "_ldap", + NULL, + -1, + methods, +}; + /* module initialisation */ -DL_EXPORT(void) -init_ldap() +PyMODINIT_FUNC +PyInit__ldap(void) { PyObject *m, *d; @@ -31,7 +39,7 @@ #endif /* Create the module and add the functions */ - m = Py_InitModule("_ldap", methods); + m = PyModule_Create(&moduleDef); /* Add some symbolic constants to the module */ d = PyModule_GetDict(m); @@ -46,4 +54,6 @@ /* Check for errors */ if (PyErr_Occurred()) Py_FatalError("can't initialize module _ldap"); + return m; } + diff -Nuar python-ldap-2.3.13-2.x/Modules/LDAPObject.c python-ldap-2.3.13/Modules/LDAPObject.c --- python-ldap-2.3.13-2.x/Modules/LDAPObject.c 2009-10-30 14:20:47.000000000 +0100 +++ python-ldap-2.3.13/Modules/LDAPObject.c 2011-02-23 17:12:55.921409011 +0100 @@ -25,7 +25,7 @@ LDAPObject* newLDAPObject( LDAP* l ) { - LDAPObject* self = (LDAPObject*) PyObject_NEW(LDAPObject, &LDAP_Type); + LDAPObject* self = (LDAPObject*) PyObject_New(LDAPObject, &LDAP_Type); if (self == NULL) return NULL; self->ldap = l; @@ -139,7 +139,7 @@ if (list == Py_None) { /* None indicates a NULL mod_bvals */ - } else if (PyString_Check(list)) { + } else if (PyBytes_Check(list)) { /* Single string is a singleton list */ lm->mod_bvalues = PyMem_NEW(struct berval *, 2); if (lm->mod_bvalues == NULL) @@ -148,8 +148,8 @@ if (lm->mod_bvalues[0] == NULL) goto nomem; lm->mod_bvalues[1] = NULL; - lm->mod_bvalues[0]->bv_len = PyString_Size(list); - lm->mod_bvalues[0]->bv_val = PyString_AsString(list); + lm->mod_bvalues[0]->bv_len = PyBytes_Size(list); + lm->mod_bvalues[0]->bv_val = PyBytes_AsString(list); } else if (PySequence_Check(list)) { nstrs = PySequence_Length(list); lm->mod_bvalues = PyMem_NEW(struct berval *, nstrs + 1); @@ -163,14 +163,14 @@ item = PySequence_GetItem(list, i); if (item == NULL) goto error; - if (!PyString_Check(item)) { + if (!PyBytes_Check(item)) { PyErr_SetObject( PyExc_TypeError, Py_BuildValue( "sO", "expected a string in the list", item)); Py_DECREF(item); goto error; } - lm->mod_bvalues[i]->bv_len = PyString_Size(item); - lm->mod_bvalues[i]->bv_val = PyString_AsString(item); + lm->mod_bvalues[i]->bv_len = PyBytes_Size(item); + lm->mod_bvalues[i]->bv_val = PyBytes_AsString(item); Py_DECREF(item); } if (nstrs == 0) @@ -264,7 +264,7 @@ if (attrlist == Py_None) { /* None means a NULL attrlist */ - } else if (PyString_Check(attrlist)) { + } else if (PyBytes_Check(attrlist)) { /* caught by John Benninghoff <jo...@netscape.com> */ PyErr_SetObject( PyExc_TypeError, Py_BuildValue("sO", "expected *list* of strings, not a string", attrlist )); @@ -280,13 +280,13 @@ item = PySequence_GetItem(attrlist, i); if (item == NULL) goto error; - if (!PyString_Check(item)) { + if (!PyBytes_Check(item)) { PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO", "expected string in list", item)); Py_DECREF(item); goto error; } - attrs[i] = PyString_AsString(item); + attrs[i] = PyBytes_AsString(item); Py_DECREF(item); } attrs[len] = NULL; @@ -445,7 +445,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_add_ext" ); - return PyInt_FromLong(msgid); + return PyLong_FromLong(msgid); } /* ldap_simple_bind */ @@ -488,7 +488,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_simple_bind" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } @@ -567,7 +567,7 @@ if (result == NULL) /*searching for a better error code */ return LDAP_OPERATIONS_ERROR; - c_result = PyString_AsString(result); /*xxx Error checking?? */ + c_result = PyBytes_AsString(result); /*xxx Error checking?? */ /* according to the sasl docs, we should malloc() the returned string only for calls where interact->id == SASL_CB_PASS, so we @@ -662,7 +662,7 @@ /* now we extract the sasl mechanism from the SASL Object */ mechanism = PyObject_GetAttrString(SASLObject, "mech"); if (mechanism == NULL) return NULL; - c_mechanism = PyString_AsString(mechanism); + c_mechanism = PyBytes_AsString(mechanism); Py_DECREF(mechanism); mechanism = NULL; @@ -685,7 +685,7 @@ if (msgid != LDAP_SUCCESS) return LDAPerror( self->ldap, "ldap_sasl_interactive_bind_s" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } #endif @@ -729,7 +729,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_cancel" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } #endif @@ -775,7 +775,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_compare_ext" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } @@ -816,7 +816,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_delete_ext" ); - return PyInt_FromLong(msgid); + return PyLong_FromLong(msgid); } @@ -864,7 +864,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_modify_ext" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } @@ -908,7 +908,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_rename" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } @@ -1073,7 +1073,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_search_ext" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } @@ -1227,7 +1227,7 @@ if ( ldaperror!=LDAP_SUCCESS ) return LDAPerror( self->ldap, "ldap_passwd" ); - return PyInt_FromLong( msgid ); + return PyLong_FromLong( msgid ); } /* methods */ @@ -1259,14 +1259,6 @@ { NULL, NULL } }; -/* get attribute */ - -static PyObject* -getattr(LDAPObject* self, char* name) -{ - return Py_FindMethod(methods, (PyObject*)self, name); -} - /* set attribute */ static int @@ -1276,28 +1268,44 @@ return -1; } -/* type entry */ - PyTypeObject LDAP_Type = { -#if defined(MS_WINDOWS) || defined(__CYGWIN__) - /* see http://www.python.org/doc/FAQ.html#3.24 */ - PyObject_HEAD_INIT(NULL) -#else /* ! MS_WINDOWS */ - PyObject_HEAD_INIT(&PyType_Type) -#endif /* MS_WINDOWS */ - 0, /*ob_size*/ - "LDAP", /*tp_name*/ - sizeof(LDAPObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)getattr, /*tp_getattr*/ - (setattrfunc)setattr, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "LDAP", /* Name of this type */ + sizeof(LDAPObject), /* Basic object size */ + 0, /* Item size for varobject */ + (destructor)dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + (setattrfunc)setattr, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ }; + diff -Nuar python-ldap-2.3.13-2.x/Modules/message.c python-ldap-2.3.13/Modules/message.c --- python-ldap-2.3.13-2.x/Modules/message.c 2009-10-30 14:20:47.000000000 +0100 +++ python-ldap-2.3.13/Modules/message.c 2011-02-23 17:12:55.921409011 +0100 @@ -143,7 +143,7 @@ if (refs) { Py_ssize_t i; for (i=0; refs[i] != NULL; i++) { - PyObject *refstr = PyString_FromString(refs[i]); + PyObject *refstr = PyBytes_FromString(refs[i]); PyList_Append(reflist, refstr); Py_DECREF(refstr); } diff -Nuar python-ldap-2.3.13-2.x/Modules/options.c python-ldap-2.3.13/Modules/options.c --- python-ldap-2.3.13-2.x/Modules/options.c 2011-01-06 16:20:59.000000000 +0100 +++ python-ldap-2.3.13/Modules/options.c 2011-02-23 17:12:55.921409011 +0100 @@ -205,7 +205,7 @@ extensions = PyTuple_New(num_extensions); for (i = 0; i < num_extensions; i++) PyTuple_SET_ITEM(extensions, i, - PyString_FromString(apiinfo.ldapai_extensions[i])); + PyBytes_FromString(apiinfo.ldapai_extensions[i])); /* return api info as a dictionary */ v = Py_BuildValue("{s:i, s:i, s:i, s:s, s:i, s:O}", @@ -271,7 +271,7 @@ if (self) LDAP_END_ALLOW_THREADS(self); if (res != LDAP_OPT_SUCCESS) return option_error(res, "ldap_get_option"); - return PyInt_FromLong(intval); + return PyLong_FromLong(intval); case LDAP_OPT_HOST_NAME: case LDAP_OPT_URI: @@ -312,7 +312,7 @@ Py_INCREF(Py_None); return Py_None; } - v = PyString_FromString(strval); + v = PyBytes_FromString(strval); ldap_memfree(strval); return v; diff -Nuar python-ldap-2.3.13-2.x/Modules/schema.c python-ldap-2.3.13/Modules/schema.c --- python-ldap-2.3.13-2.x/Modules/schema.c 2009-04-30 15:03:46.000000000 +0200 +++ python-ldap-2.3.13/Modules/schema.c 2011-02-23 17:12:55.921409011 +0100 @@ -22,7 +22,7 @@ py_list = PyList_New(count); count = 0; for (s=string_array; *s != 0; s++){ - PyList_SetItem(py_list, count, PyString_FromString(*s)); + PyList_SetItem(py_list, count, PyBytes_FromString(*s)); count++; } } else py_list=PyList_New(0); @@ -52,7 +52,7 @@ for (e = extensions; *e !=0; e++) { item_tuple = PyTuple_New(2); PyTuple_SetItem(item_tuple, 0, - PyString_FromString((*e)->lsei_name)); + PyBytes_FromString((*e)->lsei_name)); PyTuple_SetItem(item_tuple, 1, c_string_array_to_python((*e)->lsei_values)); PyList_SetItem(py_list, count, item_tuple); @@ -89,7 +89,7 @@ return NULL; o = ldap_str2objectclass( oc_string, &ret, &errp, flag); if (ret) { - py_ret = PyInt_FromLong(ret); + py_ret = PyLong_FromLong(ret); return py_ret; } @@ -98,16 +98,16 @@ oc_at_oids_must = c_string_array_to_python(o->oc_at_oids_must); oc_at_oids_may = c_string_array_to_python(o->oc_at_oids_may); py_ret = PyList_New(9); - PyList_SetItem(py_ret, 0, PyString_FromString(o->oc_oid)); + PyList_SetItem(py_ret, 0, PyBytes_FromString(o->oc_oid)); PyList_SetItem(py_ret, 1, oc_names); if (o->oc_desc) { - PyList_SetItem(py_ret, 2, PyString_FromString(o->oc_desc)); + PyList_SetItem(py_ret, 2, PyBytes_FromString(o->oc_desc)); } else { - PyList_SetItem(py_ret, 2, PyString_FromString("")); + PyList_SetItem(py_ret, 2, PyBytes_FromString("")); } - PyList_SetItem(py_ret, 3, PyInt_FromLong(o->oc_obsolete)); + PyList_SetItem(py_ret, 3, PyLong_FromLong(o->oc_obsolete)); PyList_SetItem(py_ret, 4, oc_sup_oids); - PyList_SetItem(py_ret, 5, PyInt_FromLong(o->oc_kind)); + PyList_SetItem(py_ret, 5, PyLong_FromLong(o->oc_kind)); PyList_SetItem(py_ret, 6, oc_at_oids_must); PyList_SetItem(py_ret, 7, oc_at_oids_may); @@ -136,50 +136,50 @@ return NULL; a = ldap_str2attributetype( at_string, &ret, &errp, flag); if (ret) { - py_ret = PyInt_FromLong(ret); + py_ret = PyLong_FromLong(ret); return py_ret; } py_ret = PyList_New(15); - PyList_SetItem(py_ret, 0, PyString_FromString(a->at_oid)); + PyList_SetItem(py_ret, 0, PyBytes_FromString(a->at_oid)); at_names = c_string_array_to_python(a->at_names); PyList_SetItem(py_ret, 1, at_names); if (a->at_desc) { - PyList_SetItem(py_ret, 2, PyString_FromString(a->at_desc)); + PyList_SetItem(py_ret, 2, PyBytes_FromString(a->at_desc)); } else { - PyList_SetItem(py_ret, 2, PyString_FromString("")); + PyList_SetItem(py_ret, 2, PyBytes_FromString("")); } - PyList_SetItem(py_ret, 3, PyInt_FromLong(a->at_obsolete)); + PyList_SetItem(py_ret, 3, PyLong_FromLong(a->at_obsolete)); if (a->at_sup_oid) { - PyList_SetItem(py_ret, 4, PyString_FromString(a->at_sup_oid)); + PyList_SetItem(py_ret, 4, PyBytes_FromString(a->at_sup_oid)); } else { - PyList_SetItem(py_ret, 4, PyString_FromString("")); + PyList_SetItem(py_ret, 4, PyBytes_FromString("")); } if (a->at_equality_oid) { - PyList_SetItem(py_ret, 5, PyString_FromString(a->at_equality_oid)); + PyList_SetItem(py_ret, 5, PyBytes_FromString(a->at_equality_oid)); } else { - PyList_SetItem(py_ret, 5, PyString_FromString("")); + PyList_SetItem(py_ret, 5, PyBytes_FromString("")); } if (a->at_ordering_oid) { - PyList_SetItem(py_ret, 6, PyString_FromString(a->at_ordering_oid)); + PyList_SetItem(py_ret, 6, PyBytes_FromString(a->at_ordering_oid)); } else { - PyList_SetItem(py_ret, 6, PyString_FromString("")); + PyList_SetItem(py_ret, 6, PyBytes_FromString("")); } if (a->at_substr_oid) { - PyList_SetItem(py_ret, 7, PyString_FromString(a->at_substr_oid)); + PyList_SetItem(py_ret, 7, PyBytes_FromString(a->at_substr_oid)); } else { - PyList_SetItem(py_ret, 7, PyString_FromString("")); + PyList_SetItem(py_ret, 7, PyBytes_FromString("")); } if (a->at_syntax_oid) { - PyList_SetItem(py_ret, 8, PyString_FromString(a->at_syntax_oid)); + PyList_SetItem(py_ret, 8, PyBytes_FromString(a->at_syntax_oid)); } else { - PyList_SetItem(py_ret, 8, PyString_FromString("")); + PyList_SetItem(py_ret, 8, PyBytes_FromString("")); } - PyList_SetItem(py_ret, 9, PyInt_FromLong(a->at_syntax_len)); - PyList_SetItem(py_ret,10, PyInt_FromLong(a->at_single_value)); - PyList_SetItem(py_ret,11, PyInt_FromLong(a->at_collective)); - PyList_SetItem(py_ret,12, PyInt_FromLong(a->at_no_user_mod)); - PyList_SetItem(py_ret,13, PyInt_FromLong(a->at_usage)); + PyList_SetItem(py_ret, 9, PyLong_FromLong(a->at_syntax_len)); + PyList_SetItem(py_ret,10, PyLong_FromLong(a->at_single_value)); + PyList_SetItem(py_ret,11, PyLong_FromLong(a->at_collective)); + PyList_SetItem(py_ret,12, PyLong_FromLong(a->at_no_user_mod)); + PyList_SetItem(py_ret,13, PyLong_FromLong(a->at_usage)); PyList_SetItem(py_ret, 14, schema_extension_to_python(a->at_extensions)); @@ -204,17 +204,17 @@ return NULL; s = ldap_str2syntax(syn_string, &ret, &errp, flag); if (ret) { - py_ret = PyInt_FromLong(ret); + py_ret = PyLong_FromLong(ret); return py_ret; } py_ret = PyList_New(4); - PyList_SetItem(py_ret, 0, PyString_FromString(s->syn_oid)); + PyList_SetItem(py_ret, 0, PyBytes_FromString(s->syn_oid)); syn_names = c_string_array_to_python(s->syn_names); PyList_SetItem(py_ret, 1, syn_names); if (s->syn_desc) { - PyList_SetItem(py_ret, 2, PyString_FromString(s->syn_desc)); + PyList_SetItem(py_ret, 2, PyBytes_FromString(s->syn_desc)); } else { - PyList_SetItem(py_ret, 2, PyString_FromString("")); + PyList_SetItem(py_ret, 2, PyBytes_FromString("")); } PyList_SetItem(py_ret, 3, schema_extension_to_python(s->syn_extensions)); @@ -238,23 +238,23 @@ return NULL; m = ldap_str2matchingrule(mr_string, &ret, &errp, flag); if (ret) { - py_ret = PyInt_FromLong(ret); + py_ret = PyLong_FromLong(ret); return py_ret; } py_ret = PyList_New(6); - PyList_SetItem(py_ret, 0, PyString_FromString(m->mr_oid)); + PyList_SetItem(py_ret, 0, PyBytes_FromString(m->mr_oid)); mr_names = c_string_array_to_python(m->mr_names); PyList_SetItem(py_ret, 1, mr_names); if (m->mr_desc) { - PyList_SetItem(py_ret, 2, PyString_FromString(m->mr_desc)); + PyList_SetItem(py_ret, 2, PyBytes_FromString(m->mr_desc)); } else { - PyList_SetItem(py_ret, 2, PyString_FromString("")); + PyList_SetItem(py_ret, 2, PyBytes_FromString("")); } - PyList_SetItem(py_ret, 3, PyInt_FromLong(m->mr_obsolete)); + PyList_SetItem(py_ret, 3, PyLong_FromLong(m->mr_obsolete)); if (m->mr_syntax_oid) { - PyList_SetItem(py_ret, 4, PyString_FromString(m->mr_syntax_oid)); + PyList_SetItem(py_ret, 4, PyBytes_FromString(m->mr_syntax_oid)); } else { - PyList_SetItem(py_ret, 4, PyString_FromString("")); + PyList_SetItem(py_ret, 4, PyBytes_FromString("")); } PyList_SetItem(py_ret, 5, schema_extension_to_python(m->mr_extensions)); diff -Nuar python-ldap-2.3.13-2.x/Modules/version.c python-ldap-2.3.13/Modules/version.c --- python-ldap-2.3.13-2.x/Modules/version.c 2009-04-30 15:03:46.000000000 +0200 +++ python-ldap-2.3.13/Modules/version.c 2011-02-23 17:12:55.921409011 +0100 @@ -14,7 +14,7 @@ { PyObject *version; - version = PyString_FromString(version_str); + version = PyBytes_FromString(version_str); PyDict_SetItemString( d, "__version__", version ); Py_DECREF(version); }
------------------------------------------------------------------------------ Free Software Download: Index, Search & Analyze Logs and other IT data in Real-Time with Splunk. Collect, index and harness all the fast moving IT data generated by your applications, servers and devices whether physical, virtual or in the cloud. Deliver compliance at lower cost and gain new business insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________ Python-LDAP-dev mailing list Python-LDAP-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/python-ldap-dev