867 static PyObject *
868 BTree__p_deactivate(BTree *self, PyObject *args, PyObject *keywords)
869 {
870 int ghostify = 1;
871 PyObject *force = NULL;
872
873 if (args && PyTuple_GET_SIZE(args) > 0) {
taking True path
when considering range: -0x8000000000000000 <= value <= 0
taking False path
874 PyErr_SetString(PyExc_TypeError,
875 "_p_deactivate takes not positional arguments");
876 return NULL;
877 }
878 if (keywords) {
taking True path
879 int size = PyDict_Size(keywords);
when PyDict_Size() returns ma_used
880 force = PyDict_GetItemString(keywords, "force");
PyDict_GetItemString does not find string
881 if (force)
taking False path
882 size--;
883 if (size) {
when considering value == (int)0 from src/BTrees/BTreeTemplate.c:879
taking False path
884 PyErr_SetString(PyExc_TypeError,
885 "_p_deactivate only accepts keyword arg force");
886 return NULL;
887 }
888 }
889
890 if (self->jar && self->oid) {
when treating unknown struct PyObject * from src/BTrees/BTreeTemplate.c:890 as non-NULL
taking True path
when treating unknown struct PyObject * from src/BTrees/BTreeTemplate.c:890 as non-NULL
taking True path
891 ghostify = self->state == cPersistent_UPTODATE_STATE;
when considering value == (signed char)0 from src/BTrees/BTreeTemplate.c:891
892 if (!ghostify && force) {
taking False path
893 if (PyObject_IsTrue(force))
894 ghostify = 1;
895 if (PyErr_Occurred())
896 return NULL;
897 }
898 if (ghostify) {
taking True path
899 if (_BTree_clear(self) < 0)
when considering range: -0x80000000 <= value <= -1
taking True path
900 return NULL;
901 PER_GHOSTIFY(self);
902 }
903 }
904
905 Py_INCREF(Py_None);
906 return Py_None;
907 }
returning (PyObject*)NULL without setting an exception
found 3 similar trace(s) to this