diff --git a/news/fix-erase-all-param-set.rst b/news/fix-erase-all-param-set.rst new file mode 100644 index 0000000..b3e4c6c --- /dev/null +++ b/news/fix-erase-all-param-set.rst @@ -0,0 +1,23 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* Fix EraseAllParamSet binding for compiled RefinableObj + +**Security:** + +* diff --git a/src/extensions/refinableobj_ext.cpp b/src/extensions/refinableobj_ext.cpp index 143dacc..df367c1 100644 --- a/src/extensions/refinableobj_ext.cpp +++ b/src/extensions/refinableobj_ext.cpp @@ -85,6 +85,11 @@ RefinablePar& _GetParNotFixedLong(RefinableObj& obj, const long i) return obj.GetParNotFixed(i); } +void _EraseAllParamSet(RefinableObj& obj) +{ + obj.EraseAllParamSet(); +} + class RefinableObjWrap : public RefinableObj, public wrapper @@ -103,11 +108,6 @@ class RefinableObjWrap : public RefinableObj, RefinableObj::SetDeleteRefParInDestructor(false); } - // Fix for const void issue - void EraseAllParamSet() { - this->RefinableObj::EraseAllParamSet(); - } - const std::string& default_GetClassName() const { return this->RefinableObj::GetClassName(); } @@ -484,7 +484,7 @@ void wrap_refinableobj() return_value_policy()) .def("GetParamSet_ParNotFixedHumanValue", &RefinableObj::GetParamSet_ParNotFixedHumanValue) - .def("EraseAllParamSet", &RefinableObjWrap::EraseAllParamSet) + .def("EraseAllParamSet", &_EraseAllParamSet) .def("GetParamSetName", &RefinableObj::GetParamSetName, return_value_policy()) .def("SetLimitsAbsolute", ( void (RefinableObj::*) diff --git a/tests/test_lsq.py b/tests/test_lsq.py index 412daaf..82624b7 100644 --- a/tests/test_lsq.py +++ b/tests/test_lsq.py @@ -13,7 +13,7 @@ import pytest -from pyobjcryst import refinableobj +from pyobjcryst import ObjCrystException, refinableobj from pyobjcryst.diffractiondatasinglecrystal import ( DiffractionDataSingleCrystal, ) @@ -56,6 +56,17 @@ def test_lsq_get_refined_obj(self): lsq.PrepareRefParList() # print(lsq.GetCompiledRefinedObj()) + def test_lsq_compiled_refined_obj_erase_all_param_set(self): + """Check parameter sets can be erased on compiled refined + objects.""" + lsq = LSQ() + lsq.SetRefinedObj(self.d, 0, True, True) + lsq.PrepareRefParList() + refobj = lsq.GetCompiledRefinedObj() + save = refobj.CreateParamSet("save") + refobj.EraseAllParamSet() + self.assertRaises(ObjCrystException, refobj.SaveParamSet, save) + def test_lsq_set_pr_fixed(self): """Check Creating a basic LSQ object & get obs&calc arrays.""" lsq = LSQ()