diff --git a/bob/learn/libsvm/machine.cpp b/bob/learn/libsvm/machine.cpp index b4b8300b1d10a4df8940844a95255ab0a11b180a..5dfb98cead32ac3939bcb1c83ae7e5a252895f9e 100644 --- a/bob/learn/libsvm/machine.cpp +++ b/bob/learn/libsvm/machine.cpp @@ -444,11 +444,11 @@ PyObject* PyBobLearnLibsvmMachine_Repr(PyBobLearnLibsvmMachineObject* self) { * <bob.learn.libsvm.Machine float64@(3, 2)> */ - auto shape = make_safe(PyObject_GetAttrString((PyObject*)self, "shape")); - auto shape_str = make_safe(PyObject_Str(shape.get())); + PyObject* shape = Py_BuildValue("(nn)", self->cxx->inputSize(), + self->cxx->outputSize()); PyObject* retval = PyUnicode_FromFormat("<%s float64@%U>", - Py_TYPE(self)->tp_name, shape_str.get()); + Py_TYPE(self)->tp_name, PYOBJECT_STR(shape)); #if PYTHON_VERSION_HEX < 0x03000000 if (!retval) return 0; diff --git a/bob/learn/libsvm/test_machine.py b/bob/learn/libsvm/test_machine.py index c05d912647da2bed404b2eb94a2dcf25ddaf3de6..76a00acba4534f3f16571d7f9ef6709df53b547d 100644 --- a/bob/learn/libsvm/test_machine.py +++ b/bob/learn/libsvm/test_machine.py @@ -79,6 +79,7 @@ def test_can_load(): assert -1 in machine.labels assert +1 in machine.labels assert abs(machine.gamma - 0.0769231) < 1e-6 + assert type(machine.__repr__()) is str def test_can_save(): @@ -251,6 +252,7 @@ def test_correctness_iris(): pred_labels, pred_probs = machine.predict_class_and_probabilities(data) assert numpy.array_equal(pred_labels, real_labels) assert numpy.all(abs(numpy.vstack(pred_probs) - numpy.vstack(real_probs)) < 1e-6) + @nose.tools.raises(RuntimeError) def test_correctness_inputsize_exceeds():