tdb python binding: raise KeyError(key) when the key doesn't exist
authorAurelien Aptel <aaptel@suse.com>
Thu, 16 Jul 2015 14:55:28 +0000 (16:55 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Tue, 21 Jul 2015 17:04:15 +0000 (19:04 +0200)
This change makes tdb dicts more consistent with Python dicts.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=7416

Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/tdb/pytdb.c

index b0f9cd961d77774e2f3e88321a03da5c861ac7fb..c9d3a7660e3fd5489985b4c0825c9187b80e714c 100644 (file)
@@ -650,7 +650,11 @@ static PyObject *obj_getitem(PyTdbObject *self, PyObject *key)
 
        val = tdb_fetch(self->ctx, tkey);
        if (val.dptr == NULL) {
-               PyErr_SetString(PyExc_KeyError, "No such TDB entry");
+               /*
+                * if the key doesn't exist raise KeyError(key) to be
+                * consistent with python dict
+                */
+               PyErr_SetObject(PyExc_KeyError, key);
                return NULL;
        } else {
                return PyBytes_FromTDB_DATA(val);