1034 static PyObject *
1035 bucket__p_deactivate(Bucket *self, PyObject *args, PyObject *keywords)
1036 {
1037 int ghostify = 1;
1038 PyObject *force = NULL;
1039
1040 if (args && PyTuple_GET_SIZE(args) > 0) {
taking True path
when considering range: -0x8000000000000000 <= value <= 0
taking False path
1041 PyErr_SetString(PyExc_TypeError,
1042 "_p_deactivate takes not positional arguments");
1043 return NULL;
1044 }
1045 if (keywords) {
taking True path
1046 int size = PyDict_Size(keywords);
when PyDict_Size() returns ma_used
1047 force = PyDict_GetItemString(keywords, "force");
PyDict_GetItemString does not find string
1048 if (force)
taking False path
1049 size--;
1050 if (size) {
when considering value == (int)0 from src/BTrees/BucketTemplate.c:1046
taking False path
1051 PyErr_SetString(PyExc_TypeError,
1052 "_p_deactivate only accepts keyword arg force");
1053 return NULL;
1054 }
1055 }
1056
1057 if (self->jar && self->oid) {
when treating unknown struct PyObject * from src/BTrees/BucketTemplate.c:1057 as non-NULL
taking True path
when treating unknown struct PyObject * from src/BTrees/BucketTemplate.c:1057 as non-NULL
taking True path
1058 ghostify = self->state == cPersistent_UPTODATE_STATE;
when considering value == (signed char)0 from src/BTrees/BucketTemplate.c:1058
1059 if (!ghostify && force) {
taking False path
1060 if (PyObject_IsTrue(force))
1061 ghostify = 1;
1062 if (PyErr_Occurred())
1063 return NULL;
1064 }
1065 if (ghostify) {
taking True path
1066 if (_bucket_clear(self) < 0)
when considering range: -0x80000000 <= value <= -1
taking True path
1067 return NULL;
1068 PER_GHOSTIFY(self);
1069 }
1070 }
1071 Py_INCREF(Py_None);
1072 return Py_None;
1073 }
returning (PyObject*)NULL without setting an exception
found 3 similar trace(s) to this