From fc41daa1e6286b450d3ba01ac5a98e96ea39ae40 Mon Sep 17 00:00:00 2001 From: Ivan Usov Date: Wed, 15 Jul 2020 09:35:17 +0200 Subject: [PATCH] Convert FileList attrs into properties --- pyzebra/anatric.py | 74 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/pyzebra/anatric.py b/pyzebra/anatric.py index c981c8b..e79eb95 100644 --- a/pyzebra/anatric.py +++ b/pyzebra/anatric.py @@ -15,18 +15,6 @@ class AnatricConfig: tree = ET.parse(filename) self._tree = tree - filelist_elem = tree.find("FileList") - if filelist_elem is None: - filelist_elem = tree.find("SinqFileList") - self.filelist_type = "SINQ" - else: - self.filelist_type = "TRICS" - - self.filelist_format = filelist_elem.attrib["format"] - self.filelist_datapath = filelist_elem.find("datapath").attrib["value"] - range_vals = filelist_elem.find("range").attrib - self.filelist_ranges = (int(range_vals["start"]), int(range_vals["end"])) - crystal_elem = tree.find("crystal") self.crystal_sample = crystal_elem.find("Sample").attrib["name"] @@ -101,5 +89,67 @@ class AnatricConfig: def logfile_verbosity(self, value): self._tree.find("logfile").attrib["verbosity"] = value + @property + def filelist_type(self): + if self._tree.find("FileList") is not None: + return "TRICS" + return "SINQ" + + @filelist_type.setter + def filelist_type(self, value): + if value == "TRICS": + tag = "FileList" + elif value == "SINQ": + tag = "SinqFileList" + else: + raise ValueError("FileList value can only by 'TRICS' or 'SINQ'") + + self._tree.find("FileList").tag = tag + + @property + def filelist_format(self): + if self.filelist_type == "TRICS": + return self._tree.find("FileList").attrib["format"] + return self._tree.find("SinqFileList").attrib["format"] + + @filelist_format.setter + def filelist_format(self, value): + if self.filelist_type == "TRICS": + self._tree.find("FileList").attrib["format"] = value + else: # SINQ + self._tree.find("SinqFileList").attrib["format"] = value + + @property + def filelist_datapath(self): + if self.filelist_type == "TRICS": + return self._tree.find("FileList").find("datapath").attrib["value"] + return self._tree.find("SinqFileList").find("datapath").attrib["value"] + + @filelist_datapath.setter + def filelist_datapath(self, value): + if self.filelist_type == "TRICS": + self._tree.find("FileList").find("datapath").attrib["value"] = value + else: # SINQ + self._tree.find("SinqFileList").find("datapath").attrib["value"] = value + + @property + def filelist_ranges(self): + if self.filelist_type == "TRICS": + range_vals = self._tree.find("FileList").find("range").attrib + else: # SINQ + range_vals = self._tree.find("SinqFileList").find("range").attrib + + return (int(range_vals["start"]), int(range_vals["end"])) + + @filelist_ranges.setter + def filelist_ranges(self, value): + if self.filelist_type == "TRICS": + range_vals = self._tree.find("FileList").find("range").attrib + else: # SINQ + range_vals = self._tree.find("SinqFileList").find("range").attrib + + range_vals["start"] = str(value[0]) + range_vals["end"] = str(value[1]) + def save_as(self, filename): self._tree.write(filename)