summaryrefslogtreecommitdiff
path: root/Modules/_gdbmmodule.c
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2013-11-17 15:59:51 +1000
committerNick Coghlan <ncoghlan@gmail.com>2013-11-17 15:59:51 +1000
commitfdbc1773f23f2ab6b422a12496d7e82f17b16ee8 (patch)
tree30bce3b706ee8d1ac440856ad37ef1f12bf8ea6e /Modules/_gdbmmodule.c
parent6b4336e84f67986d4bbc5b8e7c5ba5e97fd12eb5 (diff)
downloadcpython-fdbc1773f23f2ab6b422a12496d7e82f17b16ee8.tar.gz
Close #19282: Native context management in dbm
Diffstat (limited to 'Modules/_gdbmmodule.c')
-rw-r--r--Modules/_gdbmmodule.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c
index 36c06d13b7..229e16e627 100644
--- a/Modules/_gdbmmodule.c
+++ b/Modules/_gdbmmodule.c
@@ -425,6 +425,20 @@ dbm_sync(dbmobject *dp, PyObject *unused)
return Py_None;
}
+static PyObject *
+dbm__enter__(PyObject *self, PyObject *args)
+{
+ Py_INCREF(self);
+ return self;
+}
+
+static PyObject *
+dbm__exit__(PyObject *self, PyObject *args)
+{
+ _Py_IDENTIFIER(close);
+ return _PyObject_CallMethodId(self, &PyId_close, NULL);
+}
+
static PyMethodDef dbm_methods[] = {
{"close", (PyCFunction)dbm_close, METH_NOARGS, dbm_close__doc__},
{"keys", (PyCFunction)dbm_keys, METH_NOARGS, dbm_keys__doc__},
@@ -434,6 +448,8 @@ static PyMethodDef dbm_methods[] = {
{"sync", (PyCFunction)dbm_sync, METH_NOARGS, dbm_sync__doc__},
{"get", (PyCFunction)dbm_get, METH_VARARGS, dbm_get__doc__},
{"setdefault",(PyCFunction)dbm_setdefault,METH_VARARGS, dbm_setdefault__doc__},
+ {"__enter__", dbm__enter__, METH_NOARGS, NULL},
+ {"__exit__", dbm__exit__, METH_VARARGS, NULL},
{NULL, NULL} /* sentinel */
};