Package: sepp Version: 4.5.1+really4.5.1+dfsg-4 Severity: grave Tags: patch Justification: renders package unusable User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu lunar ubuntu-patch
Dear maintainers, sepp fails its autopkgtests with python3.11, revealing a bug in the software, because it uses a mode flag to open() which has been deprecated since python 3 and is now obsolete in python 3.11: [...] [06:42:37] checkpointing.py (line 68): INFO: Checkpoint Saved to: /tmp/sepp/output.lmge6vob/checkpoints/dumpl7z66ff0 and linked in /tmp/tmpae0xbm2t. /usr/lib/python3/dist-packages/sepp/checkpointing.py:75: DeprecationWarning: setDaemon() is deprecated, set the daemon attribute instead checkpoint_manager.timer.setDaemon(True) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sepp/scheduler.py", line 321, in call_back join._tick(job_in) File "/usr/lib/python3/dist-packages/sepp/scheduler.py", line 244, in _tick self.perform() File "/usr/lib/python3/dist-packages/sepp/exhaustive.py", line 196, in perform fullExtendedAlignments = self.merge_subalignments() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sepp/exhaustive.py", line 181, in merge_subalignments ap_alg = ap.read_extendend_alignment_and_relabel_columns( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sepp/problem.py", line 253, in read_extendend_alignment_and_relabel_columns ap_alg.build_extended_alignment( File "/usr/lib/python3/dist-packages/sepp/alignment.py", line 555, in build_extended_alignment self.read_filepath(base_alignment, "FASTA") File "/usr/lib/python3/dist-packages/sepp/alignment.py", line 294, in read_filepath file_obj = open(filename, 'rU') ^^^^^^^^^^^^^^^^^^^^ ValueError: invalid mode: 'rU' ERROR [...] (https://ci.debian.net/data/autopkgtest/unstable/amd64/s/sepp/30285435/log.gz) This also impacts invocations of sepp in other autopkgtests (q2-fragment-insertion; q2-sample-classifier) so I'm confident is reporting this as 'grave'. I've applied the attached straightforward patch in Ubuntu to fix the regression there. Thanks for considering, -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer https://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
diff -Nru sepp-4.5.1+really4.5.1+dfsg/debian/patches/open-U-obsolete.patch sepp-4.5.1+really4.5.1+dfsg/debian/patches/open-U-obsolete.patch --- sepp-4.5.1+really4.5.1+dfsg/debian/patches/open-U-obsolete.patch 1969-12-31 16:00:00.000000000 -0800 +++ sepp-4.5.1+really4.5.1+dfsg/debian/patches/open-U-obsolete.patch 2023-01-24 12:07:06.000000000 -0800 @@ -0,0 +1,52 @@ +Description: Drop obsolete "U" mode passed to open() + The "U" mode has been deprecated in python since python3 and has had no + effect. In python 3.11, it is now disallowed. Drop this mode flag that + causes runtime failures. +Author: Steve Langasek <steve.langa...@ubuntu.com> +Last-Update: 2023-01-24 +Forwarded: no + +Index: sepp-4.5.1+really4.5.1+dfsg/sepp/alignment.py +=================================================================== +--- sepp-4.5.1+really4.5.1+dfsg.orig/sepp/alignment.py ++++ sepp-4.5.1+really4.5.1+dfsg/sepp/alignment.py +@@ -108,7 +108,7 @@ + file_obj = None + if isinstance(src, str): + try: +- file_obj = open(src, "rU") ++ file_obj = open(src, "r") + except IOError: + print(("The file `%s` does not exist, exiting gracefully" % src)) + elif isinstance(src, filetypes): +@@ -291,7 +291,7 @@ + If duplicate sequence names are encountered then the old name will + be replaced. + """ +- file_obj = open(filename, 'rU') ++ file_obj = open(filename, 'r') + return self.read_file_object(file_obj, file_format=file_format) + + def read_file_object(self, file_obj, file_format='FASTA'): +@@ -582,7 +582,7 @@ + columns. Labels insertion columns with special labels and labels the + rest of columns (i.e. original columns) sequentially. + """ +- handle = open(path, 'rU') ++ handle = open(path, 'r') + insertions = None + if aformat.lower() == "stockholm": + insertions = self._read_sto(handle) +Index: sepp-4.5.1+really4.5.1+dfsg/sepp/tree.py +=================================================================== +--- sepp-4.5.1+really4.5.1+dfsg.orig/sepp/tree.py ++++ sepp-4.5.1+really4.5.1+dfsg/sepp/tree.py +@@ -314,7 +314,7 @@ + + def read_tree_from_file(self, treefile, file_format): + dataset = Dataset() +- dataset.read(open(treefile, 'rU'), schema=file_format) ++ dataset.read(open(treefile, 'r'), schema=file_format) + dendropy_tree = dataset.trees_blocks[0][0] + self._tree = dendropy_tree + self.n_leaves = self.count_leaves() diff -Nru sepp-4.5.1+really4.5.1+dfsg/debian/patches/series sepp-4.5.1+really4.5.1+dfsg/debian/patches/series --- sepp-4.5.1+really4.5.1+dfsg/debian/patches/series 2022-02-05 13:17:58.000000000 -0800 +++ sepp-4.5.1+really4.5.1+dfsg/debian/patches/series 2023-01-24 12:05:55.000000000 -0800 @@ -7,3 +7,4 @@ using_python3_interpreter.patch hmmbuild_path_for_testUPP.patch py310_collections_import.patch +open-U-obsolete.patch