From cf3abd97c0b5a8c1f450386ea10100bae48a685c Mon Sep 17 00:00:00 2001 From: Ivan Usov <ivan.usov@psi.ch> Date: Wed, 29 Jul 2020 13:48:12 +0200 Subject: [PATCH] Delete elements on attr value of None or "" --- pyzebra/anatric.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pyzebra/anatric.py b/pyzebra/anatric.py index 5e2ce50..7d221a6 100644 --- a/pyzebra/anatric.py +++ b/pyzebra/anatric.py @@ -35,7 +35,7 @@ class AnatricConfig: self._alg_elems = dict() for alg in ALGORITHMS: self._alg_elems[alg] = ET.Element("Algorithm", attrib={"implementation": alg}) - self._alg_elems[alg].text = "\n " + self._alg_elems[alg].text = "\n" self._alg_elems[alg].tail = "\n\n" self._alg_elems[self.algorithm] = self._tree.find("Algorithm") @@ -50,7 +50,8 @@ class AnatricConfig: return elem.attrib[attr] def _set_attr(self, name, tag, attr, value): - if value is None: + if value == "" or value is None: + self._del_attr(name, tag) return tree_elem = self._tree.find(name) @@ -62,6 +63,12 @@ class AnatricConfig: else: elem.attrib[attr] = value + def _del_attr(self, name, tag): + tree_elem = self._tree.find(name) + param_elem = tree_elem.find(tag) + if param_elem is not None: + tree_elem.remove(param_elem) + @property def logfile(self): return self._tree.find("logfile").attrib["file"] @@ -220,7 +227,8 @@ class AnatricConfig: return param_elem.attrib[attr] def _set_alg_attr(self, alg, tag, attr, value): - if value is None: + if value == "" or value is None: + self._del_alg_attr(alg, tag) return alg_elem = self._alg_elems[alg] @@ -232,6 +240,12 @@ class AnatricConfig: else: param_elem.attrib[attr] = value + def _del_alg_attr(self, alg, tag): + alg_elem = self._alg_elems[alg] + param_elem = alg_elem.find(tag) + if param_elem is not None: + alg_elem.remove(param_elem) + # --- adaptivemaxcog @property def threshold(self):