diff --git a/ChangeLog b/ChangeLog index 6b93fc17..59f16dfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-10-18 Federico Di Gregorio + * Big cleanup of unsigned chars to tame gcc 4. + + * Big cleanup of module names (i.e., psycopg2._psycopg everywhere.) + * psycopg/config.h: added fake localtime_r for platforms missing it * psycopg/cursor_type.c: cursors now have a FixedOffsetTimezone diff --git a/NEWS b/NEWS index 27ddd057..2fdfe3c0 100644 --- a/NEWS +++ b/NEWS @@ -13,7 +13,12 @@ What's new in psycopg 2.0 rc 1 * Better docstrings for a few functions/methods. * Some time-related functions like psycopg2.TimeFromTicks() now take the - local timezone into account. + local timezone into account. Also a tzinfo object (as per datetime module + specifications) can be passed to the psycopg2.Time and psycopg2.Datetime + constructors. + +* All classes have been renamed to exist in the psycopg2._psycopg module, + to fix problems with automatic documentation generators like epydoc. What's new in psycopg 2.0 beta 4 -------------------------------- diff --git a/psycopg/adapter_asis.c b/psycopg/adapter_asis.c index cd773839..75ee0e49 100644 --- a/psycopg/adapter_asis.c +++ b/psycopg/adapter_asis.c @@ -140,19 +140,19 @@ asis_del(PyObject* self) static PyObject * asis_repr(asisObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", self); } /* object type */ #define asisType_doc \ -"psycopg.AsIs(str) -> new AsIs adapter object" +"AsIs(str) -> new AsIs adapter object" PyTypeObject asisType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.AsIs", + "psycopg2._psycopg.AsIs", sizeof(asisObject), 0, asis_dealloc, /*tp_dealloc*/ diff --git a/psycopg/adapter_binary.c b/psycopg/adapter_binary.c index 83656a9f..48ab9756 100644 --- a/psycopg/adapter_binary.c +++ b/psycopg/adapter_binary.c @@ -257,18 +257,18 @@ binary_del(PyObject* self) static PyObject * binary_repr(binaryObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", self); } /* object type */ #define binaryType_doc \ -"psycopg.Binary(buffer) -> new binary object" +"Binary(buffer) -> new binary object" PyTypeObject binaryType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.Binary", + "psycopg2._psycopg.Binary", sizeof(binaryObject), 0, binary_dealloc, /*tp_dealloc*/ diff --git a/psycopg/adapter_datetime.c b/psycopg/adapter_datetime.c index 8443df9d..50796387 100644 --- a/psycopg/adapter_datetime.c +++ b/psycopg/adapter_datetime.c @@ -178,18 +178,19 @@ pydatetime_del(PyObject* self) static PyObject * pydatetime_repr(pydatetimeObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", + self); } /* object type */ #define pydatetimeType_doc \ -"psycopg.Pydatetime(datetime, type) -> new datetime wrapper object" +"datetime(datetime, type) -> new datetime wrapper object" PyTypeObject pydatetimeType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.datetime", + "psycopg2._psycopg.datetime", sizeof(pydatetimeObject), 0, pydatetime_dealloc, /*tp_dealloc*/ diff --git a/psycopg/adapter_list.c b/psycopg/adapter_list.c index 5d803561..d03626d8 100644 --- a/psycopg/adapter_list.c +++ b/psycopg/adapter_list.c @@ -212,18 +212,18 @@ list_del(PyObject* self) static PyObject * list_repr(listObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", self); } /* object type */ #define listType_doc \ -"psycopg.List(list) -> new list wrapper object" +"List(list) -> new list wrapper object" PyTypeObject listType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.datetime", + "psycopg2._psycopg.List", sizeof(listObject), 0, list_dealloc, /*tp_dealloc*/ diff --git a/psycopg/adapter_mxdatetime.c b/psycopg/adapter_mxdatetime.c index 7ae8ee79..f6547f46 100644 --- a/psycopg/adapter_mxdatetime.c +++ b/psycopg/adapter_mxdatetime.c @@ -177,18 +177,19 @@ mxdatetime_del(PyObject* self) static PyObject * mxdatetime_repr(mxdatetimeObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", + self); } /* object type */ #define mxdatetimeType_doc \ -"psycopg.MxDateTime(mx, type) -> new mx.DateTime wrapper object" +"MxDateTime(mx, type) -> new mx.DateTime wrapper object" PyTypeObject mxdatetimeType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.MxDateTime", + "psycopg2._psycopg.MxDateTime", sizeof(mxdatetimeObject), 0, mxdatetime_dealloc, /*tp_dealloc*/ diff --git a/psycopg/adapter_pboolean.c b/psycopg/adapter_pboolean.c index 3f93b059..35e534a8 100644 --- a/psycopg/adapter_pboolean.c +++ b/psycopg/adapter_pboolean.c @@ -141,19 +141,20 @@ pboolean_del(PyObject* self) static PyObject * pboolean_repr(pbooleanObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", + self); } /* object type */ #define pbooleanType_doc \ -"psycopg.Boolean(str) -> new Boolean adapter object" +"Boolean(str) -> new Boolean adapter object" PyTypeObject pbooleanType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.Boolean", + "psycopg2._psycopg.Boolean", sizeof(pbooleanObject), 0, pboolean_dealloc, /*tp_dealloc*/ diff --git a/psycopg/adapter_qstring.c b/psycopg/adapter_qstring.c index c5c7aa51..788d9c2f 100644 --- a/psycopg/adapter_qstring.c +++ b/psycopg/adapter_qstring.c @@ -285,18 +285,19 @@ qstring_del(PyObject* self) static PyObject * qstring_repr(qstringObject *self) { - return PyString_FromFormat("", self); + return PyString_FromFormat("", + self); } /* object type */ #define qstringType_doc \ -"psycopg.QuotedString(str, enc) -> new quoted object with 'enc' encoding" +"QuotedString(str, enc) -> new quoted object with 'enc' encoding" PyTypeObject qstringType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.QuotedString", + "psycopg2._psycopg.QuotedString", sizeof(qstringObject), 0, qstring_dealloc, /*tp_dealloc*/ diff --git a/psycopg/connection_type.c b/psycopg/connection_type.c index 7a32b8ba..7830008f 100644 --- a/psycopg/connection_type.c +++ b/psycopg/connection_type.c @@ -37,11 +37,11 @@ /* cursor method - allocate a new cursor */ #define psyco_conn_cursor_doc \ -"cursor(cursor_factory=psycopg.cursor) -> new cursor\n\n" \ +"cursor(cursor_factory=psycopg2.extensions.cursor) -> new cursor\n\n" \ "Return a new cursor. The 'cursor_factory' argument can be used to\n" \ "create non-standard cursors by passing a class different from the\n" \ "default. Note that the new class *should* be a sub-class of\n" \ -"'psycopg2.cursor'.\n" +"'psycopg2.extensions.cursor'.\n" static PyObject * psyco_conn_cursor(connectionObject *self, PyObject *args, PyObject *keywds) @@ -71,7 +71,6 @@ psyco_conn_cursor(connectionObject *self, PyObject *args, PyObject *keywds) return obj; } - /* close method - close the connection and all related cursors */ @@ -92,7 +91,6 @@ psyco_conn_close(connectionObject *self, PyObject *args) return Py_None; } - /* commit method - commit all changes to the database */ @@ -335,7 +333,7 @@ connection_repr(connectionObject *self) PyTypeObject connectionType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.connection", + "psycopg2._psycopg.connection", sizeof(connectionObject), 0, connection_dealloc, /*tp_dealloc*/ diff --git a/psycopg/cursor_type.c b/psycopg/cursor_type.c index 64e43f0b..cfee0216 100644 --- a/psycopg/cursor_type.c +++ b/psycopg/cursor_type.c @@ -596,7 +596,7 @@ _psyco_curs_buildrow_fill(cursorObject *self, PyObject *res, Dprintf("_psyco_curs_buildrow: row %ld, element %d, len %i", self->row, i, len); - val = typecast_cast(PyTuple_GET_ITEM(self->casts, i), str, len, + val = typecast_cast(PyTuple_GET_ITEM(self->casts, i), (char*)str, len, (PyObject*)self); if (val) { @@ -1331,7 +1331,7 @@ cursor_repr(cursorObject *self) PyTypeObject cursorType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.cursor", + "psycopg2._psycopg.cursor", sizeof(cursorObject), 0, cursor_dealloc, /*tp_dealloc*/ diff --git a/psycopg/microprotocols_proto.c b/psycopg/microprotocols_proto.c index cfd3c32e..a7934bbe 100644 --- a/psycopg/microprotocols_proto.c +++ b/psycopg/microprotocols_proto.c @@ -157,7 +157,7 @@ isqlquote_del(PyObject* self) PyTypeObject isqlquoteType = { PyObject_HEAD_INIT(NULL) 0, - "psycopg._psycopg.ISQLQuote", + "psycopg2._psycopg.ISQLQuote", sizeof(isqlquoteObject), 0, isqlquote_dealloc, /*tp_dealloc*/ diff --git a/psycopg/psycopgmodule.c b/psycopg/psycopgmodule.c index 31d16f90..493a6f13 100644 --- a/psycopg/psycopgmodule.c +++ b/psycopg/psycopgmodule.c @@ -295,23 +295,27 @@ PyObject *Error, *Warning, *InterfaceError, *DatabaseError, static void psyco_errors_init(void) { - Error = PyErr_NewException("psycopg.Error", PyExc_StandardError, NULL); - Warning = PyErr_NewException("psycopg.Warning", PyExc_StandardError,NULL); - InterfaceError = PyErr_NewException("psycopg.InterfaceError", Error, NULL); - DatabaseError = PyErr_NewException("psycopg.DatabaseError", Error, NULL); - - InternalError = - PyErr_NewException("psycopg.InternalError", DatabaseError, NULL); - OperationalError = - PyErr_NewException("psycopg.OperationalError", DatabaseError, NULL); - ProgrammingError = - PyErr_NewException("psycopg.ProgrammingError", DatabaseError, NULL); - IntegrityError = - PyErr_NewException("psycopg.IntegrityError", DatabaseError,NULL); - DataError = - PyErr_NewException("psycopg.DataError", DatabaseError, NULL); + Error = PyErr_NewException("psycopg2._psycopg.Error", + PyExc_StandardError, NULL); + Warning = PyErr_NewException("psycopg2._psycopg.Warning", + PyExc_StandardError,NULL); + InterfaceError = PyErr_NewException("psycopg2._psycopg.InterfaceError", + Error, NULL); + DatabaseError = PyErr_NewException("psycopg2._psycopg.DatabaseError", + Error, NULL); + InternalError = PyErr_NewException("psycopg2._psycopg.InternalError", + DatabaseError, NULL); + OperationalError = PyErr_NewException("psycopg2._psycopg.OperationalError", + DatabaseError, NULL); + ProgrammingError = PyErr_NewException("psycopg2._psycopg.ProgrammingError", + DatabaseError, NULL); + IntegrityError = PyErr_NewException("psycopg2._psycopg.IntegrityError", + DatabaseError,NULL); + DataError = PyErr_NewException("psycopg2._psycopg.DataError", + DatabaseError, NULL); NotSupportedError = - PyErr_NewException("psycopg.NotSupportedError", DatabaseError, NULL); + PyErr_NewException("psycopg2._psycopg.NotSupportedError", + DatabaseError, NULL); } void diff --git a/psycopg/typecast.c b/psycopg/typecast.c index a07df2cb..1bb3da38 100644 --- a/psycopg/typecast.c +++ b/psycopg/typecast.c @@ -52,9 +52,9 @@ skip_until_space(char *s) #endif #include "psycopg/typecast_array.c" - #include "psycopg/typecast_builtins.c" + /* a list of initializers, used to make the typecasters accessible anyway */ #ifdef HAVE_PYDATETIME typecastObject_initlist typecast_pydatetime[] = { @@ -325,7 +325,7 @@ PyTypeObject typecastType = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "psycopg.type", /*tp_name*/ + "psycopg2._psycopg.type", /*tp_name*/ sizeof(typecastObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ @@ -440,7 +440,7 @@ typecast_from_c(typecastObject_initlist *type, PyObject *dict) } PyObject * -typecast_cast(PyObject *obj, unsigned char *str, int len, PyObject *curs) +typecast_cast(PyObject *obj, char *str, int len, PyObject *curs) { PyObject *old, *res = NULL; typecastObject *self = (typecastObject *)obj; diff --git a/psycopg/typecast.h b/psycopg/typecast.h index 6bc159bb..ec77e5ca 100644 --- a/psycopg/typecast.h +++ b/psycopg/typecast.h @@ -29,7 +29,7 @@ extern "C" { #endif /* type of type-casting functions (both C and Python) */ -typedef PyObject *(*typecast_function)(unsigned char *, int len, PyObject *); +typedef PyObject *(*typecast_function)(char *, int len, PyObject *); /** typecast type **/ @@ -80,6 +80,6 @@ extern PyObject *typecast_from_python( /* the function used to dispatch typecasting calls */ extern PyObject *typecast_cast( - PyObject *self, unsigned char *str, int len, PyObject *curs); + PyObject *self, char *str, int len, PyObject *curs); #endif /* !defined(PSYCOPG_TYPECAST_H) */ diff --git a/psycopg/typecast_array.c b/psycopg/typecast_array.c index 130d61fe..2e34a3ef 100644 --- a/psycopg/typecast_array.c +++ b/psycopg/typecast_array.c @@ -32,8 +32,8 @@ #define ASCAN_QUOTED 4 static int -typecast_array_tokenize(unsigned char *str, int strlength, - int *pos, unsigned char** token, int *length) +typecast_array_tokenize(char *str, int strlength, + int *pos, char** token, int *length) { /* FORTRAN glory */ int i, j, q, b, l, res; @@ -103,7 +103,7 @@ typecast_array_tokenize(unsigned char *str, int strlength, } if (res == ASCAN_QUOTED) { - unsigned char *buffer = PyMem_Malloc(l+1); + char *buffer = PyMem_Malloc(l+1); if (buffer == NULL) return ASCAN_ERROR; *token = buffer; @@ -131,11 +131,11 @@ typecast_array_tokenize(unsigned char *str, int strlength, } static int -typecast_array_scan(unsigned char *str, int strlength, +typecast_array_scan(char *str, int strlength, PyObject *curs, PyObject *base, PyObject *array) { - int state, length, pos = 0; - unsigned char *token; + int state, length = 0, pos = 0; + char *token; PyObject *stack[MAX_DIMENSIONS]; int stack_index = 0; @@ -192,7 +192,7 @@ typecast_array_scan(unsigned char *str, int strlength, have to be taken on the single items **/ static PyObject * -typecast_GENERIC_ARRAY_cast(unsigned char *str, int len, PyObject *curs) +typecast_GENERIC_ARRAY_cast(char *str, int len, PyObject *curs) { PyObject *obj = NULL; PyObject *base = ((typecastObject*)((cursorObject*)curs)->caster)->bcast; diff --git a/psycopg/typecast_basic.c b/psycopg/typecast_basic.c index c5d55e90..d3ebb0fc 100644 --- a/psycopg/typecast_basic.c +++ b/psycopg/typecast_basic.c @@ -22,9 +22,9 @@ /** INTEGER - cast normal integers (4 bytes) to python int **/ static PyObject * -typecast_INTEGER_cast(unsigned char *s, int len, PyObject *curs) +typecast_INTEGER_cast(char *s, int len, PyObject *curs) { - unsigned char buffer[12]; + char buffer[12]; if (s == NULL) {Py_INCREF(Py_None); return Py_None;} if (s[len] != '\0') { @@ -37,9 +37,9 @@ typecast_INTEGER_cast(unsigned char *s, int len, PyObject *curs) /** LONGINTEGER - cast long integers (8 bytes) to python long **/ static PyObject * -typecast_LONGINTEGER_cast(unsigned char *s, int len, PyObject *curs) +typecast_LONGINTEGER_cast(char *s, int len, PyObject *curs) { - unsigned char buffer[24]; + char buffer[24]; if (s == NULL) {Py_INCREF(Py_None); return Py_None;} if (s[len] != '\0') { @@ -52,10 +52,10 @@ typecast_LONGINTEGER_cast(unsigned char *s, int len, PyObject *curs) /** FLOAT - cast floating point numbers to python float **/ static PyObject * -typecast_FLOAT_cast(unsigned char *s, int len, PyObject *curs) +typecast_FLOAT_cast(char *s, int len, PyObject *curs) { /* FIXME: is 64 large enough for any float? */ - unsigned char buffer[64]; + char buffer[64]; if (s == NULL) {Py_INCREF(Py_None); return Py_None;} if (s[len] != '\0') { @@ -68,7 +68,7 @@ typecast_FLOAT_cast(unsigned char *s, int len, PyObject *curs) /** STRING - cast strings of any type to python string **/ static PyObject * -typecast_STRING_cast(unsigned char *s, int len, PyObject *curs) +typecast_STRING_cast(char *s, int len, PyObject *curs) { if (s == NULL) {Py_INCREF(Py_None); return Py_None;} return PyString_FromStringAndSize(s, len); @@ -77,7 +77,7 @@ typecast_STRING_cast(unsigned char *s, int len, PyObject *curs) /** UNICODE - cast strings of any type to a python unicode object **/ static PyObject * -typecast_UNICODE_cast(unsigned char *s, int len, PyObject *curs) +typecast_UNICODE_cast(char *s, int len, PyObject *curs) { PyObject *enc; @@ -99,7 +99,7 @@ typecast_UNICODE_cast(unsigned char *s, int len, PyObject *curs) /** BOOLEAN - cast boolean value into right python object **/ static PyObject * -typecast_BOOLEAN_cast(unsigned char *s, int len, PyObject *curs) +typecast_BOOLEAN_cast(char *s, int len, PyObject *curs) { PyObject *res; @@ -118,10 +118,10 @@ typecast_BOOLEAN_cast(unsigned char *s, int len, PyObject *curs) #ifdef HAVE_DECIMAL static PyObject * -typecast_DECIMAL_cast(unsigned char *s, int len, PyObject *curs) +typecast_DECIMAL_cast(char *s, int len, PyObject *curs) { PyObject *res = NULL; - unsigned char *buffer; + char *buffer; if (s == NULL) {Py_INCREF(Py_None); return Py_None;} diff --git a/psycopg/typecast_binary.c b/psycopg/typecast_binary.c index bc2ad606..d490bc70 100644 --- a/psycopg/typecast_binary.c +++ b/psycopg/typecast_binary.c @@ -80,7 +80,7 @@ static PyBufferProcs chunk_as_buffer = PyTypeObject chunkType = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ - "psycopg._psycopg.chunk", /* tp_name */ + "psycopg2._psycopg.chunk", /* tp_name */ sizeof(chunkObject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor) chunk_dealloc, /* tp_dealloc*/ @@ -152,11 +152,11 @@ typecast_BINARY_cast_unescape(unsigned char *str, size_t *to_length) #endif static PyObject * -typecast_BINARY_cast(unsigned char *s, int l, PyObject *curs) +typecast_BINARY_cast(char *s, int l, PyObject *curs) { chunkObject *chunk; PyObject *res; - unsigned char *str, *buffer = NULL; + char *str, *buffer = NULL; size_t len; if (s == NULL) {Py_INCREF(Py_None); return Py_None;} @@ -171,7 +171,7 @@ typecast_BINARY_cast(unsigned char *s, int l, PyObject *curs) buffer[l] = '\0'; s = buffer; } - str = PQunescapeBytea(s, &len); + str = (char*)PQunescapeBytea((unsigned char*)s, &len); Dprintf("typecast_BINARY_cast: unescaped %d bytes", len); if (buffer) PyMem_Free(buffer); diff --git a/psycopg/typecast_datetime.c b/psycopg/typecast_datetime.c index 7ce9fb49..40c80f3f 100644 --- a/psycopg/typecast_datetime.c +++ b/psycopg/typecast_datetime.c @@ -34,7 +34,7 @@ extern PyObject *pyDeltaTypeP; /** DATE - cast a date into a date python object **/ static PyObject * -typecast_PYDATE_cast(unsigned char *str, int len, PyObject *curs) +typecast_PYDATE_cast(char *str, int len, PyObject *curs) { PyObject* obj = NULL; int n, y=0, m=0, d=0; @@ -67,7 +67,7 @@ typecast_PYDATE_cast(unsigned char *str, int len, PyObject *curs) /** DATETIME - cast a timestamp into a datetime python object **/ static PyObject * -typecast_PYDATETIME_cast(unsigned char *str, int len, PyObject *curs) +typecast_PYDATETIME_cast(char *str, int len, PyObject *curs) { PyObject* obj = NULL; int n, y=0, m=0, d=0; @@ -131,7 +131,7 @@ typecast_PYDATETIME_cast(unsigned char *str, int len, PyObject *curs) /** TIME - parse time into a time object **/ static PyObject * -typecast_PYTIME_cast(unsigned char *str, int len, PyObject *curs) +typecast_PYTIME_cast(char *str, int len, PyObject *curs) { PyObject* obj = NULL; int n, hh=0, mm=0; @@ -160,7 +160,7 @@ typecast_PYTIME_cast(unsigned char *str, int len, PyObject *curs) /** INTERVAL - parse an interval into a timedelta object **/ static PyObject * -typecast_PYINTERVAL_cast(unsigned char *str, int len, PyObject *curs) +typecast_PYINTERVAL_cast(char *str, int len, PyObject *curs) { long years = 0, months = 0, days = 0; double hours = 0.0, minutes = 0.0, seconds = 0.0, hundredths = 0.0; diff --git a/psycopg/typecast_mxdatetime.c b/psycopg/typecast_mxdatetime.c index 6dd73a94..b71a15e7 100644 --- a/psycopg/typecast_mxdatetime.c +++ b/psycopg/typecast_mxdatetime.c @@ -28,7 +28,7 @@ extern mxDateTimeModule_APIObject *mxDateTimeP; /** DATE - cast a date into mx.DateTime python object **/ static PyObject * -typecast_MXDATE_cast(unsigned char *str, int len, PyObject *curs) +typecast_MXDATE_cast(char *str, int len, PyObject *curs) { int n, y=0, m=0, d=0; int hh=0, mm=0; @@ -60,7 +60,7 @@ typecast_MXDATE_cast(unsigned char *str, int len, PyObject *curs) /** TIME - parse time into an mx.DateTime object **/ static PyObject * -typecast_MXTIME_cast(unsigned char *str, int len, PyObject *curs) +typecast_MXTIME_cast(char *str, int len, PyObject *curs) { int n, hh=0, mm=0; double ss=0.0; @@ -84,7 +84,7 @@ typecast_MXTIME_cast(unsigned char *str, int len, PyObject *curs) /** INTERVAL - parse an interval into an mx.DateTimeDelta **/ static PyObject * -typecast_MXINTERVAL_cast(unsigned char *str, int len, PyObject *curs) +typecast_MXINTERVAL_cast(char *str, int len, PyObject *curs) { long years = 0, months = 0, days = 0, denominator = 1; double hours = 0.0, minutes = 0.0, seconds = 0.0, hundredths = 0.0;