From 368f34f3d1cc108ea17aedf5d557b6def4536553 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 13 May 2026 17:29:12 +0200 Subject: [PATCH 1/3] Fix EraseAllParamSet binding for compiled RefinableObj --- src/extensions/refinableobj_ext.cpp | 12 ++++++------ tests/test_lsq.py | 12 +++++++++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/extensions/refinableobj_ext.cpp b/src/extensions/refinableobj_ext.cpp index 143dacc5..df367c19 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 412daaf0..4b141c9a 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,16 @@ 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() From efacec3b669017612815bd9958eb6472d591ee3c Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 25 Aug 2026 15:20:34 +0200 Subject: [PATCH 2/3] add news file --- news/fix-erase-all-param-set.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 news/fix-erase-all-param-set.rst diff --git a/news/fix-erase-all-param-set.rst b/news/fix-erase-all-param-set.rst new file mode 100644 index 00000000..b3e4c6c8 --- /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:** + +* From 3621c8d421f0ae7182f0aa29ddeda6031790fdd4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 25 Aug 2026 13:26:25 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit hooks --- tests/test_lsq.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_lsq.py b/tests/test_lsq.py index 4b141c9a..82624b7b 100644 --- a/tests/test_lsq.py +++ b/tests/test_lsq.py @@ -57,7 +57,8 @@ def test_lsq_get_refined_obj(self): # print(lsq.GetCompiledRefinedObj()) def test_lsq_compiled_refined_obj_erase_all_param_set(self): - """Check parameter sets can be erased on compiled refined objects.""" + """Check parameter sets can be erased on compiled refined + objects.""" lsq = LSQ() lsq.SetRefinedObj(self.d, 0, True, True) lsq.PrepareRefParList()