diff --git a/src/python/recoll/pyrecoll.cpp b/src/python/recoll/pyrecoll.cpp index 1b1a050c..1ab12079 100644 --- a/src/python/recoll/pyrecoll.cpp +++ b/src/python/recoll/pyrecoll.cpp @@ -1,5 +1,5 @@ #ifndef lint -static char rcsid[] = "@(#$Id: pyrecoll.cpp,v 1.6 2008-08-26 07:36:41 dockes Exp $ (C) 2007 J.F.Dockes"; +static char rcsid[] = "@(#$Id: pyrecoll.cpp,v 1.7 2008-08-26 07:56:40 dockes Exp $ (C) 2007 J.F.Dockes"; #endif #include @@ -41,12 +41,12 @@ typedef struct { PyObject_HEAD /* Type-specific fields go here. */ Rcl::Db *db; -} recollq_DbObject; -static PyTypeObject recollq_DbType = { +} recoll_DbObject; +static PyTypeObject recoll_DbType = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "recollq.Db", /*tp_name*/ - sizeof(recollq_DbObject), /*tp_basicsize*/ + "recoll.Db", /*tp_name*/ + sizeof(recoll_DbObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ 0, /*tp_dealloc*/ 0, /*tp_print*/ @@ -64,7 +64,7 @@ static PyTypeObject recollq_DbType = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "Recollq Db objects", /* tp_doc */ + "Recoll Db objects", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ @@ -90,13 +90,13 @@ typedef struct { /* Type-specific fields go here. */ Rcl::Query *query; int next; // Index of result to be fetched next or -1 if uninit -} recollq_QueryObject; +} recoll_QueryObject; -static PyTypeObject recollq_QueryType = { +static PyTypeObject recoll_QueryType = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "recollq.Query", /*tp_name*/ - sizeof(recollq_QueryObject), /*tp_basicsize*/ + "recoll.Query", /*tp_name*/ + sizeof(recoll_QueryObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ 0, /*tp_dealloc*/ 0, /*tp_print*/ @@ -114,7 +114,7 @@ static PyTypeObject recollq_QueryType = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "Recollq Query object", /* tp_doc */ + "Recoll Query object", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ @@ -137,13 +137,13 @@ typedef struct { PyObject_HEAD /* Type-specific fields go here. */ Rcl::Doc *doc; -} recollq_DocObject; +} recoll_DocObject; -static PyTypeObject recollq_DocType = { +static PyTypeObject recoll_DocType = { PyObject_HEAD_INIT(NULL) 0, /*ob_size*/ - "recollq.Doc", /*tp_name*/ - sizeof(recollq_DocObject), /*tp_basicsize*/ + "recoll.Doc", /*tp_name*/ + sizeof(recoll_DocObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ 0, /*tp_dealloc*/ 0, /*tp_print*/ @@ -161,7 +161,7 @@ static PyTypeObject recollq_DocType = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "Recollq Doc objects", /* tp_doc */ + "Recoll Doc objects", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ @@ -184,7 +184,7 @@ static PyTypeObject recollq_DocType = { /////////////////////////////////////////////// ////// Db object code static void -Db_dealloc(recollq_DbObject *self) +Db_dealloc(recoll_DbObject *self) { LOGDEB(("Db_dealloc\n")); if (self->db) @@ -198,9 +198,9 @@ static PyObject * Db_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { LOGDEB(("Db_new\n")); - recollq_DbObject *self; + recoll_DbObject *self; - self = (recollq_DbObject *)type->tp_alloc(type, 0); + self = (recoll_DbObject *)type->tp_alloc(type, 0); if (self == 0) return 0; self->db = 0; @@ -208,7 +208,7 @@ Db_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } static int -Db_init(recollq_DbObject *self, PyObject *args, PyObject *kwargs) +Db_init(recoll_DbObject *self, PyObject *args, PyObject *kwargs) { LOGDEB(("Db_init\n")); static char *kwlist[] = {"confdir", "extra_dbs", "writable", NULL}; @@ -289,7 +289,7 @@ Db_init(recollq_DbObject *self, PyObject *args, PyObject *kwargs) } static PyObject * -Db_query(recollq_DbObject* self) +Db_query(recoll_DbObject* self) { LOGDEB(("Db_query\n")); if (self->db == 0 || the_dbs.find(self->db) == the_dbs.end()) { @@ -297,8 +297,8 @@ Db_query(recollq_DbObject* self) PyErr_SetString(PyExc_AttributeError, "db"); return 0; } - recollq_QueryObject *result = - (recollq_QueryObject *)obj_Create(&recollq_QueryType, 0, 0); + recoll_QueryObject *result = + (recoll_QueryObject *)obj_Create(&recoll_QueryType, 0, 0); if (!result) return 0; result->query = new Rcl::Query(self->db); @@ -308,7 +308,7 @@ Db_query(recollq_DbObject* self) } static PyObject * -Db_setAbstractParams(recollq_DbObject *self, PyObject *args, PyObject *kwargs) +Db_setAbstractParams(recoll_DbObject *self, PyObject *args, PyObject *kwargs) { LOGDEB(("Db_setAbstractParams\n")); static char *kwlist[] = {"maxchars", "contextwords", NULL}; @@ -326,14 +326,14 @@ Db_setAbstractParams(recollq_DbObject *self, PyObject *args, PyObject *kwargs) } static PyObject * -Db_makeDocAbstract(recollq_DbObject* self, PyObject *args, PyObject *) +Db_makeDocAbstract(recoll_DbObject* self, PyObject *args, PyObject *) { LOGDEB(("Db_makeDocAbstract\n")); - recollq_DocObject *pydoc; - recollq_QueryObject *pyquery; + recoll_DocObject *pydoc; + recoll_QueryObject *pyquery; if (!PyArg_ParseTuple(args, "O!O!:Db_makeDocAbstract", - &recollq_DocType, &pydoc, - &recollq_QueryType, &pyquery)) { + &recoll_DocType, &pydoc, + &recoll_QueryType, &pyquery)) { return 0; } if (self->db == 0 || the_dbs.find(self->db) == the_dbs.end()) { @@ -363,7 +363,7 @@ Db_makeDocAbstract(recollq_DbObject* self, PyObject *args, PyObject *) } static PyObject * -Db_needUpdate(recollq_DbObject* self, PyObject *args, PyObject *kwds) +Db_needUpdate(recoll_DbObject* self, PyObject *args, PyObject *kwds) { char *udi = 0; char *sig = 0; @@ -384,17 +384,17 @@ Db_needUpdate(recollq_DbObject* self, PyObject *args, PyObject *kwds) } static PyObject * -Db_addOrUpdate(recollq_DbObject* self, PyObject *args, PyObject *) +Db_addOrUpdate(recoll_DbObject* self, PyObject *args, PyObject *) { LOGDEB(("Db_addOrUpdate\n")); char *udi = 0; char *parent_udi = 0; - recollq_DocObject *pydoc; + recoll_DocObject *pydoc; if (!PyArg_ParseTuple(args, "esesO!:Db_makeDocAbstract", "utf-8", &udi, "utf-8", &parent_udi, - &recollq_DocType, &pydoc)) { + &recoll_DocType, &pydoc)) { return 0; } if (self->db == 0 || the_dbs.find(self->db) == the_dbs.end()) { @@ -442,7 +442,7 @@ static PyMethodDef Db_methods[] = { ///////////////////////////////////////////// /// Query object method static void -Query_dealloc(recollq_QueryObject *self) +Query_dealloc(recoll_QueryObject *self) { LOGDEB(("Query_dealloc\n")); if (self->query) @@ -455,10 +455,10 @@ Query_dealloc(recollq_QueryObject *self) static PyObject * Query_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { - recollq_QueryObject *self; + recoll_QueryObject *self; LOGDEB(("Query_new\n")); - self = (recollq_QueryObject *)type->tp_alloc(type, 0); + self = (recoll_QueryObject *)type->tp_alloc(type, 0); if (self == 0) return 0; self->query = 0; @@ -470,7 +470,7 @@ Query_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) // valid Query Object is through db_query(). (or we'd need to add a Db // parameter to the Query object creation method) static int -Query_init(recollq_QueryObject *self, PyObject *, PyObject *) +Query_init(recoll_QueryObject *self, PyObject *, PyObject *) { LOGDEB(("Query_init\n")); @@ -483,7 +483,7 @@ Query_init(recollq_QueryObject *self, PyObject *, PyObject *) } static PyObject * -Query_execute(recollq_QueryObject* self, PyObject *args, PyObject *kwds) +Query_execute(recoll_QueryObject* self, PyObject *args, PyObject *kwds) { char *utf8 = 0; LOGDEB(("Query_execute\n")); @@ -512,7 +512,7 @@ Query_execute(recollq_QueryObject* self, PyObject *args, PyObject *kwds) } static PyObject * -Query_fetchone(recollq_QueryObject* self, PyObject *, PyObject *) +Query_fetchone(recoll_QueryObject* self, PyObject *, PyObject *) { LOGDEB(("Query_fetchone\n")); @@ -526,8 +526,8 @@ Query_fetchone(recollq_QueryObject* self, PyObject *, PyObject *) PyErr_SetString(PyExc_AttributeError, "query: no results"); return 0; } - recollq_DocObject *result = - (recollq_DocObject *)obj_Create(&recollq_DocType, 0, 0); + recoll_DocObject *result = + (recoll_DocObject *)obj_Create(&recoll_DocType, 0, 0); if (!result) { LOGERR(("Query_fetchone: couldn't create doc object for result\n")); return 0; @@ -570,7 +570,7 @@ static PyMethodDef Query_methods[] = { {NULL} /* Sentinel */ }; static PyMemberDef Query_members[] = { - {"next", T_INT, offsetof(recollq_QueryObject, next), 0, + {"next", T_INT, offsetof(recoll_QueryObject, next), 0, "Next index to be fetched from query results"}, {NULL} /* Sentinel */ }; @@ -578,7 +578,7 @@ static PyMemberDef Query_members[] = { /////////////////////////////////////////////////////////////////////// ///// Doc object methods static void -Doc_dealloc(recollq_DocObject *self) +Doc_dealloc(recoll_DocObject *self) { LOGDEB(("Doc_dealloc\n")); if (self->doc) @@ -591,10 +591,10 @@ Doc_dealloc(recollq_DocObject *self) static PyObject * Doc_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - recollq_DocObject *self; + recoll_DocObject *self; LOGDEB(("Doc_new\n")); - self = (recollq_DocObject *)type->tp_alloc(type, 0); + self = (recoll_DocObject *)type->tp_alloc(type, 0); if (self == 0) return 0; self->doc = 0; @@ -602,7 +602,7 @@ Doc_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } static int -Doc_init(recollq_DocObject *self, PyObject *, PyObject *) +Doc_init(recoll_DocObject *self, PyObject *, PyObject *) { LOGDEB(("Doc_init\n")); if (self->doc) @@ -620,7 +620,7 @@ Doc_init(recollq_DocObject *self, PyObject *, PyObject *) // attributes (pass them an additional parameters as from the // getseters table and call it a "closure" static PyObject * -Doc_getmeta(recollq_DocObject *self, void *closure) +Doc_getmeta(recoll_DocObject *self, void *closure) { LOGDEB(("Doc_getmeta: [%s]\n", (const char *)closure)); if (self->doc == 0 || @@ -647,7 +647,7 @@ Doc_getmeta(recollq_DocObject *self, void *closure) } static int -Doc_setmeta(recollq_DocObject *self, PyObject *value, void *closure) +Doc_setmeta(recoll_DocObject *self, PyObject *value, void *closure) { if (self->doc == 0 || the_docs.find(self->doc) == the_docs.end()) { @@ -759,17 +759,17 @@ static PyGetSetDef Doc_getseters[] = { ////////////////////////////////////////////////////////////////////////// // Module methods static PyObject * -recollq_connect(PyObject *self, PyObject *args, PyObject *kwargs) +recoll_connect(PyObject *self, PyObject *args, PyObject *kwargs) { - LOGDEB(("recollq_connect\n")); - recollq_DbObject *db = - (recollq_DbObject *)obj_Create(&recollq_DbType, args, kwargs); + LOGDEB(("recoll_connect\n")); + recoll_DbObject *db = + (recoll_DbObject *)obj_Create(&recoll_DbType, args, kwargs); return (PyObject *)db; } -static PyMethodDef recollqMethods[] = { - {"connect", (PyCFunction)recollq_connect, METH_VARARGS|METH_KEYWORDS, +static PyMethodDef recollMethods[] = { + {"connect", (PyCFunction)recoll_connect, METH_VARARGS|METH_KEYWORDS, "Connect to index and get Db object."}, {NULL, NULL, 0, NULL} /* Sentinel */ @@ -785,7 +785,7 @@ RclConfig *RclConfig::getMainConfig() #define PyMODINIT_FUNC void #endif PyMODINIT_FUNC -initrecollq(void) +initrecoll(void) { string reason; rclconfig = recollinit(0, 0, reason, 0); @@ -800,38 +800,38 @@ initrecollq(void) } PyObject* m; - m = Py_InitModule3("recollq", recollqMethods, + m = Py_InitModule3("recoll", recollMethods, "Recoll query extension module."); - recollq_DbType.tp_dealloc = (destructor)Db_dealloc; - recollq_DbType.tp_new = Db_new; - recollq_DbType.tp_init = (initproc)Db_init; - recollq_DbType.tp_methods = Db_methods; - if (PyType_Ready(&recollq_DbType) < 0) + recoll_DbType.tp_dealloc = (destructor)Db_dealloc; + recoll_DbType.tp_new = Db_new; + recoll_DbType.tp_init = (initproc)Db_init; + recoll_DbType.tp_methods = Db_methods; + if (PyType_Ready(&recoll_DbType) < 0) return; - LOGDEB(("initrecollq: recollq_DbType new %p\n", recollq_DbType.tp_new)); - Py_INCREF(&recollq_DbType); - PyModule_AddObject(m, "Db", (PyObject *)&recollq_DbType); + LOGDEB(("initrecoll: recoll_DbType new %p\n", recoll_DbType.tp_new)); + Py_INCREF(&recoll_DbType); + PyModule_AddObject(m, "Db", (PyObject *)&recoll_DbType); - recollq_QueryType.tp_dealloc = (destructor)Query_dealloc; - recollq_QueryType.tp_new = Query_new; - recollq_QueryType.tp_init = (initproc)Query_init; - recollq_QueryType.tp_methods = Query_methods; - recollq_QueryType.tp_members = Query_members; - if (PyType_Ready(&recollq_QueryType) < 0) + recoll_QueryType.tp_dealloc = (destructor)Query_dealloc; + recoll_QueryType.tp_new = Query_new; + recoll_QueryType.tp_init = (initproc)Query_init; + recoll_QueryType.tp_methods = Query_methods; + recoll_QueryType.tp_members = Query_members; + if (PyType_Ready(&recoll_QueryType) < 0) return; - Py_INCREF(&recollq_QueryType); - PyModule_AddObject(m, "Query", (PyObject *)&recollq_QueryType); + Py_INCREF(&recoll_QueryType); + PyModule_AddObject(m, "Query", (PyObject *)&recoll_QueryType); - recollq_DocType.tp_dealloc = (destructor)Doc_dealloc; - recollq_DocType.tp_new = Doc_new; - recollq_DocType.tp_init = (initproc)Doc_init; - recollq_DocType.tp_getset = Doc_getseters; - // recollq_DocType.tp_methods = Doc_methods; - if (PyType_Ready(&recollq_DocType) < 0) + recoll_DocType.tp_dealloc = (destructor)Doc_dealloc; + recoll_DocType.tp_new = Doc_new; + recoll_DocType.tp_init = (initproc)Doc_init; + recoll_DocType.tp_getset = Doc_getseters; + // recoll_DocType.tp_methods = Doc_methods; + if (PyType_Ready(&recoll_DocType) < 0) return; - Py_INCREF(&recollq_DocType); - PyModule_AddObject(m, "Doc", (PyObject *)&recollq_DocType); + Py_INCREF(&recoll_DocType); + PyModule_AddObject(m, "Doc", (PyObject *)&recoll_DocType); - LOGDEB(("initrecollq ok\n")); + LOGDEB(("initrecoll ok\n")); } diff --git a/src/python/recoll/setup.py b/src/python/recoll/setup.py index 4da0dc9e..1a3f673a 100644 --- a/src/python/recoll/setup.py +++ b/src/python/recoll/setup.py @@ -1,7 +1,7 @@ from distutils.core import setup, Extension top = '../../' -module1 = Extension('recollq', +module1 = Extension('recoll', define_macros = [('MAJOR_VERSION', '1'), ('MINOR_VERSION', '0'), ('UNAC_VERSION', '"1.0.7"'), @@ -18,7 +18,7 @@ module1 = Extension('recollq', ], libraries = ['xapian', 'iconv'], library_dirs = ['/usr/local/lib'], - sources = ['recoll_query.cpp', + sources = ['pyrecoll.cpp', top + 'common/rclconfig.cpp', top + 'common/rclinit.cpp', top + 'common/textsplit.cpp', @@ -43,13 +43,11 @@ module1 = Extension('recollq', top + 'utils/wipedir.cpp' ]) - -setup (name = 'RecollQuery', +setup (name = 'Recoll', version = '1.0', - description = 'Enable querying a Recoll full text index', + description = 'Query/Augment a Recoll full text index', author = 'J.F. Dockes', author_email = 'jean-francois.dockes@wanadoo.fr', long_description = ''' -This is really just a demo package for now. ''', ext_modules = [module1]) diff --git a/src/python/samples/rcldlkp.py b/src/python/samples/rcldlkp.py index 040d1098..4ad91b50 100755 --- a/src/python/samples/rcldlkp.py +++ b/src/python/samples/rcldlkp.py @@ -90,8 +90,8 @@ fbytes = stdata[stat.ST_SIZE] f = open(docfile, 'r') if targetnum == None: - import recollq - db = recollq.connect(confdir=rclconf, writable=1) + import recoll + db = recoll.connect(confdir=rclconf, writable=1) if not db.needUpdate(udi(docfile, 0), str(fmtime)): exit(0) diff --git a/src/python/samples/rclmbox.py b/src/python/samples/rclmbox.py index 3e0e3a80..00ec60e6 100644 --- a/src/python/samples/rclmbox.py +++ b/src/python/samples/rclmbox.py @@ -4,7 +4,7 @@ import mailbox import email.header import email.utils #import sys -import recollq +import recoll import os import stat @@ -54,7 +54,7 @@ class mbox_indexer: self.msgnum += 1 def index_message(self, db, msg): - doc = recollq.Doc() + doc = recoll.Doc() doc.author = header_value(msg, "From") # url doc.url = "file://" + self.mbfile @@ -103,7 +103,7 @@ class mbox_indexer: db.addOrUpdate(udi, u"", doc) -db = recollq.connect(confdir=rclconf, writable=1) +db = recoll.connect(confdir=rclconf, writable=1) mbidx = mbox_indexer(mbfile) mbidx.index(db) diff --git a/src/python/samples/recollq.py b/src/python/samples/recollq.py index 099e9141..0d3e49d5 100755 --- a/src/python/samples/recollq.py +++ b/src/python/samples/recollq.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import sys -import recollq +import recoll allmeta = ("title", "keywords", "abstract", "url", "mimetype", "mtime", "ipath", "fbytes", "dbytes", "relevance") @@ -28,22 +28,22 @@ def dotest(db, q): q = "essaouira" print "TESTING WITH .recoll" -db = recollq.connect() +db = recoll.connect() db.setAbstractParams(maxchars=80, contextwords=2) dotest(db, q) sys.exit(0) print "TESTING WITH .recoll-test" -db = recollq.connect(confdir="/Users/dockes/.recoll-test") +db = recoll.connect(confdir="/Users/dockes/.recoll-test") dotest(db, q) print "TESTING WITH .recoll-doc" -db = recollq.connect(confdir="/y/home/dockes/.recoll-doc") +db = recoll.connect(confdir="/y/home/dockes/.recoll-doc") dotest(db, q) print "TESTING WITH .recoll and .recoll-doc" -db = recollq.connect(confdir="/Users/dockes/.recoll", +db = recoll.connect(confdir="/Users/dockes/.recoll", extra_dbs=("/y/home/dockes/.recoll-doc",)) dotest(db, q)