[med-svn] [Git][med-team/ragout][master] 4 commits: Port to Python3.12 by removing vendored six.py

Andreas Tille (@tille) gitlab at salsa.debian.org
Fri Feb 2 10:15:51 GMT 2024



Andreas Tille pushed to branch master at Debian Med / ragout


Commits:
e582f58d by Andreas Tille at 2024-02-02T11:00:28+01:00
Port to Python3.12 by removing vendored six.py

- - - - -
3e51cbce by Andreas Tille at 2024-02-02T11:00:43+01:00
routine-update: Standards-Version: 4.6.2

- - - - -
1e822b8f by Andreas Tille at 2024-02-02T11:00:46+01:00
routine-update: Build-Depends: s/dh-python/dh-sequence-python3/

- - - - -
84127ce7 by Andreas Tille at 2024-02-02T11:15:05+01:00
routine-update: Ready to upload to unstable

- - - - -


6 changed files:

- debian/changelog
- debian/control
- − debian/patches/adjustSetupParsingBinaries.patch
- + debian/patches/python3.12.patch
- debian/patches/series
- debian/rules


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,12 @@
+ragout (2.3-5) unstable; urgency=medium
+
+  * Port to Python3.12 by removing vendored six.py
+    Closes: #1061835
+  * Standards-Version: 4.6.2 (routine-update)
+  * Build-Depends: s/dh-python/dh-sequence-python3/ (routine-update)
+
+ -- Andreas Tille <tille at debian.org>  Fri, 02 Feb 2024 11:01:34 +0100
+
 ragout (2.3-4) unstable; urgency=medium
 
   * Fix watch file


=====================================
debian/control
=====================================
@@ -4,11 +4,12 @@ Uploaders: Andreas Tille <tille at debian.org>
 Section: science
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
-               dh-python,
+               dh-sequence-python3,
                python3-dev,
                python3-networkx,
-               python3-setuptools
-Standards-Version: 4.6.1
+               python3-setuptools,
+               python3-six
+Standards-Version: 4.6.2
 Vcs-Browser: https://salsa.debian.org/med-team/ragout
 Vcs-Git: https://salsa.debian.org/med-team/ragout.git
 Homepage: https://github.com/fenderglass/Ragout/
@@ -19,7 +20,8 @@ Architecture: any
 Depends: ${shlibs:Depends},
          ${python3:Depends},
          ${misc:Depends},
-         python3-networkx
+         python3-networkx,
+         python3-six
 Recommends: sibelia
 Description: Reference-Assisted Genome Ordering UTility
  Ragout (Reference-Assisted Genome Ordering UTility) is a tool for


=====================================
debian/patches/adjustSetupParsingBinaries.patch deleted
=====================================
@@ -1,12 +0,0 @@
-Index: ragout/setup.py
-===================================================================
---- ragout.orig/setup.py
-+++ ragout/setup.py
-@@ -39,6 +39,6 @@ setup(name='ragout',
-                 'ragout/phylogeny', 'ragout/scaffolder', 'ragout/shared',
-                 'ragout/synteny_backend', 'ragout/newick'],
-       package_data={'ragout': ['LICENSE']},
--      scripts = ['bin/ragout-maf2synteny', 'bin/ragout-overlap', 'bin/ragout'],
-+      #scripts = ['bin/ragout-maf2synteny', 'bin/ragout-overlap', 'bin/ragout'],
-       cmdclass={'build': MakeBuild}
-       )


=====================================
debian/patches/python3.12.patch
=====================================
@@ -0,0 +1,1135 @@
+Description: Port to Python3.12 by removing vendored six.py
+Bug-Debian: https://bugs.debian.org/1061835
+Author: Andreas Tille <tille at debian.org>
+        Thanks for the hint to Alexandre Detiste <alexandre.detiste at gmail.com>
+Last-Update: Fri, 02 Feb 2024 10:40:30 +0100
+
+--- a/ragout/six.py
++++ /dev/null
+@@ -1,952 +0,0 @@
+-# Copyright (c) 2010-2018 Benjamin Peterson
+-#
+-# Permission is hereby granted, free of charge, to any person obtaining a copy
+-# of this software and associated documentation files (the "Software"), to deal
+-# in the Software without restriction, including without limitation the rights
+-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-# copies of the Software, and to permit persons to whom the Software is
+-# furnished to do so, subject to the following conditions:
+-#
+-# The above copyright notice and this permission notice shall be included in all
+-# copies or substantial portions of the Software.
+-#
+-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+-# SOFTWARE.
+-
+-"""Utilities for writing code that runs on Python 2 and 3"""
+-
+-from __future__ import absolute_import
+-
+-import functools
+-import itertools
+-import operator
+-import sys
+-import types
+-
+-__author__ = "Benjamin Peterson <benjamin at python.org>"
+-__version__ = "1.12.0"
+-
+-
+-# Useful for very coarse version differentiation.
+-PY2 = sys.version_info[0] == 2
+-PY3 = sys.version_info[0] == 3
+-PY34 = sys.version_info[0:2] >= (3, 4)
+-
+-if PY3:
+-    string_types = str,
+-    integer_types = int,
+-    class_types = type,
+-    text_type = str
+-    binary_type = bytes
+-
+-    MAXSIZE = sys.maxsize
+-else:
+-    string_types = basestring,
+-    integer_types = (int, long)
+-    class_types = (type, types.ClassType)
+-    text_type = unicode
+-    binary_type = str
+-
+-    if sys.platform.startswith("java"):
+-        # Jython always uses 32 bits.
+-        MAXSIZE = int((1 << 31) - 1)
+-    else:
+-        # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
+-        class X(object):
+-
+-            def __len__(self):
+-                return 1 << 31
+-        try:
+-            len(X())
+-        except OverflowError:
+-            # 32-bit
+-            MAXSIZE = int((1 << 31) - 1)
+-        else:
+-            # 64-bit
+-            MAXSIZE = int((1 << 63) - 1)
+-        del X
+-
+-
+-def _add_doc(func, doc):
+-    """Add documentation to a function."""
+-    func.__doc__ = doc
+-
+-
+-def _import_module(name):
+-    """Import module, returning the module after the last dot."""
+-    __import__(name)
+-    return sys.modules[name]
+-
+-
+-class _LazyDescr(object):
+-
+-    def __init__(self, name):
+-        self.name = name
+-
+-    def __get__(self, obj, tp):
+-        result = self._resolve()
+-        setattr(obj, self.name, result)  # Invokes __set__.
+-        try:
+-            # This is a bit ugly, but it avoids running this again by
+-            # removing this descriptor.
+-            delattr(obj.__class__, self.name)
+-        except AttributeError:
+-            pass
+-        return result
+-
+-
+-class MovedModule(_LazyDescr):
+-
+-    def __init__(self, name, old, new=None):
+-        super(MovedModule, self).__init__(name)
+-        if PY3:
+-            if new is None:
+-                new = name
+-            self.mod = new
+-        else:
+-            self.mod = old
+-
+-    def _resolve(self):
+-        return _import_module(self.mod)
+-
+-    def __getattr__(self, attr):
+-        _module = self._resolve()
+-        value = getattr(_module, attr)
+-        setattr(self, attr, value)
+-        return value
+-
+-
+-class _LazyModule(types.ModuleType):
+-
+-    def __init__(self, name):
+-        super(_LazyModule, self).__init__(name)
+-        self.__doc__ = self.__class__.__doc__
+-
+-    def __dir__(self):
+-        attrs = ["__doc__", "__name__"]
+-        attrs += [attr.name for attr in self._moved_attributes]
+-        return attrs
+-
+-    # Subclasses should override this
+-    _moved_attributes = []
+-
+-
+-class MovedAttribute(_LazyDescr):
+-
+-    def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
+-        super(MovedAttribute, self).__init__(name)
+-        if PY3:
+-            if new_mod is None:
+-                new_mod = name
+-            self.mod = new_mod
+-            if new_attr is None:
+-                if old_attr is None:
+-                    new_attr = name
+-                else:
+-                    new_attr = old_attr
+-            self.attr = new_attr
+-        else:
+-            self.mod = old_mod
+-            if old_attr is None:
+-                old_attr = name
+-            self.attr = old_attr
+-
+-    def _resolve(self):
+-        module = _import_module(self.mod)
+-        return getattr(module, self.attr)
+-
+-
+-class _SixMetaPathImporter(object):
+-
+-    """
+-    A meta path importer to import six.moves and its submodules.
+-
+-    This class implements a PEP302 finder and loader. It should be compatible
+-    with Python 2.5 and all existing versions of Python3
+-    """
+-
+-    def __init__(self, six_module_name):
+-        self.name = six_module_name
+-        self.known_modules = {}
+-
+-    def _add_module(self, mod, *fullnames):
+-        for fullname in fullnames:
+-            self.known_modules[self.name + "." + fullname] = mod
+-
+-    def _get_module(self, fullname):
+-        return self.known_modules[self.name + "." + fullname]
+-
+-    def find_module(self, fullname, path=None):
+-        if fullname in self.known_modules:
+-            return self
+-        return None
+-
+-    def __get_module(self, fullname):
+-        try:
+-            return self.known_modules[fullname]
+-        except KeyError:
+-            raise ImportError("This loader does not know module " + fullname)
+-
+-    def load_module(self, fullname):
+-        try:
+-            # in case of a reload
+-            return sys.modules[fullname]
+-        except KeyError:
+-            pass
+-        mod = self.__get_module(fullname)
+-        if isinstance(mod, MovedModule):
+-            mod = mod._resolve()
+-        else:
+-            mod.__loader__ = self
+-        sys.modules[fullname] = mod
+-        return mod
+-
+-    def is_package(self, fullname):
+-        """
+-        Return true, if the named module is a package.
+-
+-        We need this method to get correct spec objects with
+-        Python 3.4 (see PEP451)
+-        """
+-        return hasattr(self.__get_module(fullname), "__path__")
+-
+-    def get_code(self, fullname):
+-        """Return None
+-
+-        Required, if is_package is implemented"""
+-        self.__get_module(fullname)  # eventually raises ImportError
+-        return None
+-    get_source = get_code  # same as get_code
+-
+-_importer = _SixMetaPathImporter(__name__)
+-
+-
+-class _MovedItems(_LazyModule):
+-
+-    """Lazy loading of moved objects"""
+-    __path__ = []  # mark as package
+-
+-
+-_moved_attributes = [
+-    MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
+-    MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"),
+-    MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"),
+-    MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"),
+-    MovedAttribute("intern", "__builtin__", "sys"),
+-    MovedAttribute("map", "itertools", "builtins", "imap", "map"),
+-    MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"),
+-    MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"),
+-    MovedAttribute("getoutput", "commands", "subprocess"),
+-    MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"),
+-    MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"),
+-    MovedAttribute("reduce", "__builtin__", "functools"),
+-    MovedAttribute("shlex_quote", "pipes", "shlex", "quote"),
+-    MovedAttribute("StringIO", "StringIO", "io"),
+-    MovedAttribute("UserDict", "UserDict", "collections"),
+-    MovedAttribute("UserList", "UserList", "collections"),
+-    MovedAttribute("UserString", "UserString", "collections"),
+-    MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
+-    MovedAttribute("zip", "itertools", "builtins", "izip", "zip"),
+-    MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"),
+-    MovedModule("builtins", "__builtin__"),
+-    MovedModule("configparser", "ConfigParser"),
+-    MovedModule("copyreg", "copy_reg"),
+-    MovedModule("dbm_gnu", "gdbm", "dbm.gnu"),
+-    MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"),
+-    MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
+-    MovedModule("http_cookies", "Cookie", "http.cookies"),
+-    MovedModule("html_entities", "htmlentitydefs", "html.entities"),
+-    MovedModule("html_parser", "HTMLParser", "html.parser"),
+-    MovedModule("http_client", "httplib", "http.client"),
+-    MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
+-    MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"),
+-    MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"),
+-    MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"),
+-    MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"),
+-    MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
+-    MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
+-    MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
+-    MovedModule("cPickle", "cPickle", "pickle"),
+-    MovedModule("queue", "Queue"),
+-    MovedModule("reprlib", "repr"),
+-    MovedModule("socketserver", "SocketServer"),
+-    MovedModule("_thread", "thread", "_thread"),
+-    MovedModule("tkinter", "Tkinter"),
+-    MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
+-    MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
+-    MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
+-    MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
+-    MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
+-    MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"),
+-    MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
+-    MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
+-    MovedModule("tkinter_colorchooser", "tkColorChooser",
+-                "tkinter.colorchooser"),
+-    MovedModule("tkinter_commondialog", "tkCommonDialog",
+-                "tkinter.commondialog"),
+-    MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
+-    MovedModule("tkinter_font", "tkFont", "tkinter.font"),
+-    MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
+-    MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
+-                "tkinter.simpledialog"),
+-    MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"),
+-    MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"),
+-    MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"),
+-    MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
+-    MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"),
+-    MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"),
+-]
+-# Add windows specific modules.
+-if sys.platform == "win32":
+-    _moved_attributes += [
+-        MovedModule("winreg", "_winreg"),
+-    ]
+-
+-for attr in _moved_attributes:
+-    setattr(_MovedItems, attr.name, attr)
+-    if isinstance(attr, MovedModule):
+-        _importer._add_module(attr, "moves." + attr.name)
+-del attr
+-
+-_MovedItems._moved_attributes = _moved_attributes
+-
+-moves = _MovedItems(__name__ + ".moves")
+-_importer._add_module(moves, "moves")
+-
+-
+-class Module_six_moves_urllib_parse(_LazyModule):
+-
+-    """Lazy loading of moved objects in six.moves.urllib_parse"""
+-
+-
+-_urllib_parse_moved_attributes = [
+-    MovedAttribute("ParseResult", "urlparse", "urllib.parse"),
+-    MovedAttribute("SplitResult", "urlparse", "urllib.parse"),
+-    MovedAttribute("parse_qs", "urlparse", "urllib.parse"),
+-    MovedAttribute("parse_qsl", "urlparse", "urllib.parse"),
+-    MovedAttribute("urldefrag", "urlparse", "urllib.parse"),
+-    MovedAttribute("urljoin", "urlparse", "urllib.parse"),
+-    MovedAttribute("urlparse", "urlparse", "urllib.parse"),
+-    MovedAttribute("urlsplit", "urlparse", "urllib.parse"),
+-    MovedAttribute("urlunparse", "urlparse", "urllib.parse"),
+-    MovedAttribute("urlunsplit", "urlparse", "urllib.parse"),
+-    MovedAttribute("quote", "urllib", "urllib.parse"),
+-    MovedAttribute("quote_plus", "urllib", "urllib.parse"),
+-    MovedAttribute("unquote", "urllib", "urllib.parse"),
+-    MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
+-    MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"),
+-    MovedAttribute("urlencode", "urllib", "urllib.parse"),
+-    MovedAttribute("splitquery", "urllib", "urllib.parse"),
+-    MovedAttribute("splittag", "urllib", "urllib.parse"),
+-    MovedAttribute("splituser", "urllib", "urllib.parse"),
+-    MovedAttribute("splitvalue", "urllib", "urllib.parse"),
+-    MovedAttribute("uses_fragment", "urlparse", "urllib.parse"),
+-    MovedAttribute("uses_netloc", "urlparse", "urllib.parse"),
+-    MovedAttribute("uses_params", "urlparse", "urllib.parse"),
+-    MovedAttribute("uses_query", "urlparse", "urllib.parse"),
+-    MovedAttribute("uses_relative", "urlparse", "urllib.parse"),
+-]
+-for attr in _urllib_parse_moved_attributes:
+-    setattr(Module_six_moves_urllib_parse, attr.name, attr)
+-del attr
+-
+-Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes
+-
+-_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"),
+-                      "moves.urllib_parse", "moves.urllib.parse")
+-
+-
+-class Module_six_moves_urllib_error(_LazyModule):
+-
+-    """Lazy loading of moved objects in six.moves.urllib_error"""
+-
+-
+-_urllib_error_moved_attributes = [
+-    MovedAttribute("URLError", "urllib2", "urllib.error"),
+-    MovedAttribute("HTTPError", "urllib2", "urllib.error"),
+-    MovedAttribute("ContentTooShortError", "urllib", "urllib.error"),
+-]
+-for attr in _urllib_error_moved_attributes:
+-    setattr(Module_six_moves_urllib_error, attr.name, attr)
+-del attr
+-
+-Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes
+-
+-_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"),
+-                      "moves.urllib_error", "moves.urllib.error")
+-
+-
+-class Module_six_moves_urllib_request(_LazyModule):
+-
+-    """Lazy loading of moved objects in six.moves.urllib_request"""
+-
+-
+-_urllib_request_moved_attributes = [
+-    MovedAttribute("urlopen", "urllib2", "urllib.request"),
+-    MovedAttribute("install_opener", "urllib2", "urllib.request"),
+-    MovedAttribute("build_opener", "urllib2", "urllib.request"),
+-    MovedAttribute("pathname2url", "urllib", "urllib.request"),
+-    MovedAttribute("url2pathname", "urllib", "urllib.request"),
+-    MovedAttribute("getproxies", "urllib", "urllib.request"),
+-    MovedAttribute("Request", "urllib2", "urllib.request"),
+-    MovedAttribute("OpenerDirector", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"),
+-    MovedAttribute("ProxyHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("BaseHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"),
+-    MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("FileHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("FTPHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("UnknownHandler", "urllib2", "urllib.request"),
+-    MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
+-    MovedAttribute("urlretrieve", "urllib", "urllib.request"),
+-    MovedAttribute("urlcleanup", "urllib", "urllib.request"),
+-    MovedAttribute("URLopener", "urllib", "urllib.request"),
+-    MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
+-    MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
+-    MovedAttribute("parse_http_list", "urllib2", "urllib.request"),
+-    MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"),
+-]
+-for attr in _urllib_request_moved_attributes:
+-    setattr(Module_six_moves_urllib_request, attr.name, attr)
+-del attr
+-
+-Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes
+-
+-_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"),
+-                      "moves.urllib_request", "moves.urllib.request")
+-
+-
+-class Module_six_moves_urllib_response(_LazyModule):
+-
+-    """Lazy loading of moved objects in six.moves.urllib_response"""
+-
+-
+-_urllib_response_moved_attributes = [
+-    MovedAttribute("addbase", "urllib", "urllib.response"),
+-    MovedAttribute("addclosehook", "urllib", "urllib.response"),
+-    MovedAttribute("addinfo", "urllib", "urllib.response"),
+-    MovedAttribute("addinfourl", "urllib", "urllib.response"),
+-]
+-for attr in _urllib_response_moved_attributes:
+-    setattr(Module_six_moves_urllib_response, attr.name, attr)
+-del attr
+-
+-Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes
+-
+-_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"),
+-                      "moves.urllib_response", "moves.urllib.response")
+-
+-
+-class Module_six_moves_urllib_robotparser(_LazyModule):
+-
+-    """Lazy loading of moved objects in six.moves.urllib_robotparser"""
+-
+-
+-_urllib_robotparser_moved_attributes = [
+-    MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"),
+-]
+-for attr in _urllib_robotparser_moved_attributes:
+-    setattr(Module_six_moves_urllib_robotparser, attr.name, attr)
+-del attr
+-
+-Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes
+-
+-_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"),
+-                      "moves.urllib_robotparser", "moves.urllib.robotparser")
+-
+-
+-class Module_six_moves_urllib(types.ModuleType):
+-
+-    """Create a six.moves.urllib namespace that resembles the Python 3 namespace"""
+-    __path__ = []  # mark as package
+-    parse = _importer._get_module("moves.urllib_parse")
+-    error = _importer._get_module("moves.urllib_error")
+-    request = _importer._get_module("moves.urllib_request")
+-    response = _importer._get_module("moves.urllib_response")
+-    robotparser = _importer._get_module("moves.urllib_robotparser")
+-
+-    def __dir__(self):
+-        return ['parse', 'error', 'request', 'response', 'robotparser']
+-
+-_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"),
+-                      "moves.urllib")
+-
+-
+-def add_move(move):
+-    """Add an item to six.moves."""
+-    setattr(_MovedItems, move.name, move)
+-
+-
+-def remove_move(name):
+-    """Remove item from six.moves."""
+-    try:
+-        delattr(_MovedItems, name)
+-    except AttributeError:
+-        try:
+-            del moves.__dict__[name]
+-        except KeyError:
+-            raise AttributeError("no such move, %r" % (name,))
+-
+-
+-if PY3:
+-    _meth_func = "__func__"
+-    _meth_self = "__self__"
+-
+-    _func_closure = "__closure__"
+-    _func_code = "__code__"
+-    _func_defaults = "__defaults__"
+-    _func_globals = "__globals__"
+-else:
+-    _meth_func = "im_func"
+-    _meth_self = "im_self"
+-
+-    _func_closure = "func_closure"
+-    _func_code = "func_code"
+-    _func_defaults = "func_defaults"
+-    _func_globals = "func_globals"
+-
+-
+-try:
+-    advance_iterator = next
+-except NameError:
+-    def advance_iterator(it):
+-        return it.next()
+-next = advance_iterator
+-
+-
+-try:
+-    callable = callable
+-except NameError:
+-    def callable(obj):
+-        return any("__call__" in klass.__dict__ for klass in type(obj).__mro__)
+-
+-
+-if PY3:
+-    def get_unbound_function(unbound):
+-        return unbound
+-
+-    create_bound_method = types.MethodType
+-
+-    def create_unbound_method(func, cls):
+-        return func
+-
+-    Iterator = object
+-else:
+-    def get_unbound_function(unbound):
+-        return unbound.im_func
+-
+-    def create_bound_method(func, obj):
+-        return types.MethodType(func, obj, obj.__class__)
+-
+-    def create_unbound_method(func, cls):
+-        return types.MethodType(func, None, cls)
+-
+-    class Iterator(object):
+-
+-        def next(self):
+-            return type(self).__next__(self)
+-
+-    callable = callable
+-_add_doc(get_unbound_function,
+-         """Get the function out of a possibly unbound function""")
+-
+-
+-get_method_function = operator.attrgetter(_meth_func)
+-get_method_self = operator.attrgetter(_meth_self)
+-get_function_closure = operator.attrgetter(_func_closure)
+-get_function_code = operator.attrgetter(_func_code)
+-get_function_defaults = operator.attrgetter(_func_defaults)
+-get_function_globals = operator.attrgetter(_func_globals)
+-
+-
+-if PY3:
+-    def iterkeys(d, **kw):
+-        return iter(d.keys(**kw))
+-
+-    def itervalues(d, **kw):
+-        return iter(d.values(**kw))
+-
+-    def iteritems(d, **kw):
+-        return iter(d.items(**kw))
+-
+-    def iterlists(d, **kw):
+-        return iter(d.lists(**kw))
+-
+-    viewkeys = operator.methodcaller("keys")
+-
+-    viewvalues = operator.methodcaller("values")
+-
+-    viewitems = operator.methodcaller("items")
+-else:
+-    def iterkeys(d, **kw):
+-        return d.iterkeys(**kw)
+-
+-    def itervalues(d, **kw):
+-        return d.itervalues(**kw)
+-
+-    def iteritems(d, **kw):
+-        return d.iteritems(**kw)
+-
+-    def iterlists(d, **kw):
+-        return d.iterlists(**kw)
+-
+-    viewkeys = operator.methodcaller("viewkeys")
+-
+-    viewvalues = operator.methodcaller("viewvalues")
+-
+-    viewitems = operator.methodcaller("viewitems")
+-
+-_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.")
+-_add_doc(itervalues, "Return an iterator over the values of a dictionary.")
+-_add_doc(iteritems,
+-         "Return an iterator over the (key, value) pairs of a dictionary.")
+-_add_doc(iterlists,
+-         "Return an iterator over the (key, [values]) pairs of a dictionary.")
+-
+-
+-if PY3:
+-    def b(s):
+-        return s.encode("latin-1")
+-
+-    def u(s):
+-        return s
+-    unichr = chr
+-    import struct
+-    int2byte = struct.Struct(">B").pack
+-    del struct
+-    byte2int = operator.itemgetter(0)
+-    indexbytes = operator.getitem
+-    iterbytes = iter
+-    import io
+-    StringIO = io.StringIO
+-    BytesIO = io.BytesIO
+-    _assertCountEqual = "assertCountEqual"
+-    if sys.version_info[1] <= 1:
+-        _assertRaisesRegex = "assertRaisesRegexp"
+-        _assertRegex = "assertRegexpMatches"
+-    else:
+-        _assertRaisesRegex = "assertRaisesRegex"
+-        _assertRegex = "assertRegex"
+-else:
+-    def b(s):
+-        return s
+-    # Workaround for standalone backslash
+-
+-    def u(s):
+-        return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape")
+-    unichr = unichr
+-    int2byte = chr
+-
+-    def byte2int(bs):
+-        return ord(bs[0])
+-
+-    def indexbytes(buf, i):
+-        return ord(buf[i])
+-    iterbytes = functools.partial(itertools.imap, ord)
+-    import StringIO
+-    StringIO = BytesIO = StringIO.StringIO
+-    _assertCountEqual = "assertItemsEqual"
+-    _assertRaisesRegex = "assertRaisesRegexp"
+-    _assertRegex = "assertRegexpMatches"
+-_add_doc(b, """Byte literal""")
+-_add_doc(u, """Text literal""")
+-
+-
+-def assertCountEqual(self, *args, **kwargs):
+-    return getattr(self, _assertCountEqual)(*args, **kwargs)
+-
+-
+-def assertRaisesRegex(self, *args, **kwargs):
+-    return getattr(self, _assertRaisesRegex)(*args, **kwargs)
+-
+-
+-def assertRegex(self, *args, **kwargs):
+-    return getattr(self, _assertRegex)(*args, **kwargs)
+-
+-
+-if PY3:
+-    exec_ = getattr(moves.builtins, "exec")
+-
+-    def reraise(tp, value, tb=None):
+-        try:
+-            if value is None:
+-                value = tp()
+-            if value.__traceback__ is not tb:
+-                raise value.with_traceback(tb)
+-            raise value
+-        finally:
+-            value = None
+-            tb = None
+-
+-else:
+-    def exec_(_code_, _globs_=None, _locs_=None):
+-        """Execute code in a namespace."""
+-        if _globs_ is None:
+-            frame = sys._getframe(1)
+-            _globs_ = frame.f_globals
+-            if _locs_ is None:
+-                _locs_ = frame.f_locals
+-            del frame
+-        elif _locs_ is None:
+-            _locs_ = _globs_
+-        exec("""exec _code_ in _globs_, _locs_""")
+-
+-    exec_("""def reraise(tp, value, tb=None):
+-    try:
+-        raise tp, value, tb
+-    finally:
+-        tb = None
+-""")
+-
+-
+-if sys.version_info[:2] == (3, 2):
+-    exec_("""def raise_from(value, from_value):
+-    try:
+-        if from_value is None:
+-            raise value
+-        raise value from from_value
+-    finally:
+-        value = None
+-""")
+-elif sys.version_info[:2] > (3, 2):
+-    exec_("""def raise_from(value, from_value):
+-    try:
+-        raise value from from_value
+-    finally:
+-        value = None
+-""")
+-else:
+-    def raise_from(value, from_value):
+-        raise value
+-
+-
+-print_ = getattr(moves.builtins, "print", None)
+-if print_ is None:
+-    def print_(*args, **kwargs):
+-        """The new-style print function for Python 2.4 and 2.5."""
+-        fp = kwargs.pop("file", sys.stdout)
+-        if fp is None:
+-            return
+-
+-        def write(data):
+-            if not isinstance(data, basestring):
+-                data = str(data)
+-            # If the file has an encoding, encode unicode with it.
+-            if (isinstance(fp, file) and
+-                    isinstance(data, unicode) and
+-                    fp.encoding is not None):
+-                errors = getattr(fp, "errors", None)
+-                if errors is None:
+-                    errors = "strict"
+-                data = data.encode(fp.encoding, errors)
+-            fp.write(data)
+-        want_unicode = False
+-        sep = kwargs.pop("sep", None)
+-        if sep is not None:
+-            if isinstance(sep, unicode):
+-                want_unicode = True
+-            elif not isinstance(sep, str):
+-                raise TypeError("sep must be None or a string")
+-        end = kwargs.pop("end", None)
+-        if end is not None:
+-            if isinstance(end, unicode):
+-                want_unicode = True
+-            elif not isinstance(end, str):
+-                raise TypeError("end must be None or a string")
+-        if kwargs:
+-            raise TypeError("invalid keyword arguments to print()")
+-        if not want_unicode:
+-            for arg in args:
+-                if isinstance(arg, unicode):
+-                    want_unicode = True
+-                    break
+-        if want_unicode:
+-            newline = unicode("\n")
+-            space = unicode(" ")
+-        else:
+-            newline = "\n"
+-            space = " "
+-        if sep is None:
+-            sep = space
+-        if end is None:
+-            end = newline
+-        for i, arg in enumerate(args):
+-            if i:
+-                write(sep)
+-            write(arg)
+-        write(end)
+-if sys.version_info[:2] < (3, 3):
+-    _print = print_
+-
+-    def print_(*args, **kwargs):
+-        fp = kwargs.get("file", sys.stdout)
+-        flush = kwargs.pop("flush", False)
+-        _print(*args, **kwargs)
+-        if flush and fp is not None:
+-            fp.flush()
+-
+-_add_doc(reraise, """Reraise an exception.""")
+-
+-if sys.version_info[0:2] < (3, 4):
+-    def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS,
+-              updated=functools.WRAPPER_UPDATES):
+-        def wrapper(f):
+-            f = functools.wraps(wrapped, assigned, updated)(f)
+-            f.__wrapped__ = wrapped
+-            return f
+-        return wrapper
+-else:
+-    wraps = functools.wraps
+-
+-
+-def with_metaclass(meta, *bases):
+-    """Create a base class with a metaclass."""
+-    # This requires a bit of explanation: the basic idea is to make a dummy
+-    # metaclass for one level of class instantiation that replaces itself with
+-    # the actual metaclass.
+-    class metaclass(type):
+-
+-        def __new__(cls, name, this_bases, d):
+-            return meta(name, bases, d)
+-
+-        @classmethod
+-        def __prepare__(cls, name, this_bases):
+-            return meta.__prepare__(name, bases)
+-    return type.__new__(metaclass, 'temporary_class', (), {})
+-
+-
+-def add_metaclass(metaclass):
+-    """Class decorator for creating a class with a metaclass."""
+-    def wrapper(cls):
+-        orig_vars = cls.__dict__.copy()
+-        slots = orig_vars.get('__slots__')
+-        if slots is not None:
+-            if isinstance(slots, str):
+-                slots = [slots]
+-            for slots_var in slots:
+-                orig_vars.pop(slots_var)
+-        orig_vars.pop('__dict__', None)
+-        orig_vars.pop('__weakref__', None)
+-        if hasattr(cls, '__qualname__'):
+-            orig_vars['__qualname__'] = cls.__qualname__
+-        return metaclass(cls.__name__, cls.__bases__, orig_vars)
+-    return wrapper
+-
+-
+-def ensure_binary(s, encoding='utf-8', errors='strict'):
+-    """Coerce **s** to six.binary_type.
+-
+-    For Python 2:
+-      - `unicode` -> encoded to `str`
+-      - `str` -> `str`
+-
+-    For Python 3:
+-      - `str` -> encoded to `bytes`
+-      - `bytes` -> `bytes`
+-    """
+-    if isinstance(s, text_type):
+-        return s.encode(encoding, errors)
+-    elif isinstance(s, binary_type):
+-        return s
+-    else:
+-        raise TypeError("not expecting type '%s'" % type(s))
+-
+-
+-def ensure_str(s, encoding='utf-8', errors='strict'):
+-    """Coerce *s* to `str`.
+-
+-    For Python 2:
+-      - `unicode` -> encoded to `str`
+-      - `str` -> `str`
+-
+-    For Python 3:
+-      - `str` -> `str`
+-      - `bytes` -> decoded to `str`
+-    """
+-    if not isinstance(s, (text_type, binary_type)):
+-        raise TypeError("not expecting type '%s'" % type(s))
+-    if PY2 and isinstance(s, text_type):
+-        s = s.encode(encoding, errors)
+-    elif PY3 and isinstance(s, binary_type):
+-        s = s.decode(encoding, errors)
+-    return s
+-
+-
+-def ensure_text(s, encoding='utf-8', errors='strict'):
+-    """Coerce *s* to six.text_type.
+-
+-    For Python 2:
+-      - `unicode` -> `unicode`
+-      - `str` -> `unicode`
+-
+-    For Python 3:
+-      - `str` -> `str`
+-      - `bytes` -> decoded to `str`
+-    """
+-    if isinstance(s, binary_type):
+-        return s.decode(encoding, errors)
+-    elif isinstance(s, text_type):
+-        return s
+-    else:
+-        raise TypeError("not expecting type '%s'" % type(s))
+-
+-
+-
+-def python_2_unicode_compatible(klass):
+-    """
+-    A decorator that defines __unicode__ and __str__ methods under Python 2.
+-    Under Python 3 it does nothing.
+-
+-    To support Python 2 and 3 with a single code base, define a __str__ method
+-    returning text and apply this decorator to the class.
+-    """
+-    if PY2:
+-        if '__str__' not in klass.__dict__:
+-            raise ValueError("@python_2_unicode_compatible cannot be applied "
+-                             "to %s because it doesn't define __str__()." %
+-                             klass.__name__)
+-        klass.__unicode__ = klass.__str__
+-        klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
+-    return klass
+-
+-
+-# Complete the moves implementation.
+-# This code is at the end of this module to speed up module loading.
+-# Turn this module into a package.
+-__path__ = []  # required for PEP 302 and PEP 451
+-__package__ = __name__  # see PEP 366 @ReservedAssignment
+-if globals().get("__spec__") is not None:
+-    __spec__.submodule_search_locations = []  # PEP 451 @UndefinedVariable
+-# Remove other six meta path importers, since they cause problems. This can
+-# happen if six is removed from sys.modules and then reloaded. (Setuptools does
+-# this for some reason.)
+-if sys.meta_path:
+-    for i, importer in enumerate(sys.meta_path):
+-        # Here's some real nastiness: Another "instance" of the six module might
+-        # be floating around. Therefore, we can't use isinstance() to check for
+-        # the six meta path importer, since the other six instance will have
+-        # inserted an importer with different class.
+-        if (type(importer).__name__ == "_SixMetaPathImporter" and
+-                importer.name == __name__):
+-            del sys.meta_path[i]
+-            break
+-    del i, importer
+-# Finally, add the importer to the meta path import hook.
+-sys.meta_path.append(_importer)
+--- a/ragout/breakpoint_graph/breakpoint_graph.py
++++ b/ragout/breakpoint_graph/breakpoint_graph.py
+@@ -18,8 +18,8 @@ from collections import namedtuple
+ import networkx as nx
+ 
+ from ragout.shared.debug import DebugConfig
+-from ragout.six.moves import map
+-from ragout.six.moves import zip
++from six.moves import map
++from six.moves import zip
+ 
+ logger = logging.getLogger()
+ debugger = DebugConfig.get_instance()
+--- a/ragout/breakpoint_graph/chimera_detector.py
++++ b/ragout/breakpoint_graph/chimera_detector.py
+@@ -13,7 +13,7 @@ from __future__ import division
+ import logging
+ from collections import defaultdict, namedtuple
+ from copy import copy, deepcopy
+-from ragout.six.moves import range
++from six.moves import range
+ 
+ 
+ logger = logging.getLogger()
+--- a/ragout/breakpoint_graph/permutation.py
++++ b/ragout/breakpoint_graph/permutation.py
+@@ -19,7 +19,7 @@ from ragout.shared.debug import DebugCon
+ from ragout.shared import config
+ from ragout.shared.datatypes import Block, Permutation, output_permutations
+ import ragout.breakpoint_graph.repeat_resolver as rr
+-from ragout.six.moves import filter
++from six.moves import filter
+ 
+ logger = logging.getLogger()
+ debugger = DebugConfig.get_instance()
+--- a/ragout/breakpoint_graph/repeat_resolver.py
++++ b/ragout/breakpoint_graph/repeat_resolver.py
+@@ -18,8 +18,8 @@ from copy import deepcopy, copy
+ import logging
+ 
+ import networkx as nx
+-from ragout.six.moves import filter
+-from ragout.six.moves import range
++from six.moves import filter
++from six.moves import range
+ 
+ logger = logging.getLogger()
+ 
+--- a/ragout/maf2synteny/maf2synteny.py
++++ b/ragout/maf2synteny/maf2synteny.py
+@@ -15,7 +15,7 @@ import os
+ 
+ from ragout.shared.utils import which
+ from ragout.shared import config
+-from ragout.six.moves import map
++from six.moves import map
+ 
+ logger = logging.getLogger()
+ 
+--- a/ragout/main.py
++++ b/ragout/main.py
+@@ -41,7 +41,7 @@ import ragout.synteny_backend.sibelia
+ #import synteny_backend.cactus
+ import ragout.synteny_backend.maf
+ import ragout.synteny_backend.hal
+-import ragout.six as six
++import six
+ 
+ logger = logging.getLogger()
+ debugger = DebugConfig.get_instance()
+--- a/ragout/parsers/fasta_parser.py
++++ b/ragout/parsers/fasta_parser.py
+@@ -19,7 +19,7 @@ else:
+     _STR = bytes.decode
+     _BYTES = str.encode
+ 
+-from ragout.six.moves import range
++from six.moves import range
+ 
+ logger = logging.getLogger()
+ 
+--- a/ragout/parsers/recipe_parser.py
++++ b/ragout/parsers/recipe_parser.py
+@@ -14,7 +14,7 @@ import logging
+ 
+ from ragout.parsers.phylogeny_parser import get_leaves_names, PhyloException
+ import ragout.shared.config as config
+-from ragout.six.moves import map
++from six.moves import map
+ 
+ logger = logging.getLogger()
+ 
+--- a/ragout/scaffolder/merge_iters.py
++++ b/ragout/scaffolder/merge_iters.py
+@@ -25,8 +25,8 @@ from ragout.scaffolder.output_generator
+ from ragout.scaffolder.scaffolder import build_scaffolds
+ from ragout.breakpoint_graph.inferer import Adjacency
+ from ragout.breakpoint_graph.breakpoint_graph import GenChrPair
+-from ragout.six.moves import range
+-from ragout.six.moves import zip
++from six.moves import range
++from six.moves import zip
+ 
+ 
+ logger = logging.getLogger()
+--- a/ragout/scaffolder/output_generator.py
++++ b/ragout/scaffolder/output_generator.py
+@@ -12,7 +12,7 @@ import os
+ from ragout.parsers.fasta_parser import write_fasta_dict, reverse_complement
+ from ragout.__version__ import __version__
+ import ragout.shared.config as config
+-from ragout.six.moves import map, range, zip
++from six.moves import map, range, zip
+ 
+ logger = logging.getLogger()
+ 
+--- a/ragout/scaffolder/scaffolder.py
++++ b/ragout/scaffolder/scaffolder.py
+@@ -20,7 +20,7 @@ from ragout.shared.datatypes import (Con
+                                      output_permutations)
+ from ragout.scaffolder.output_generator import output_links
+ from ragout.breakpoint_graph.inferer import Adjacency
+-from ragout.six.moves import range, zip
++from six.moves import range, zip
+ 
+ 
+ logger = logging.getLogger()
+--- a/ragout/assembly_graph/assembly_refine.py
++++ b/ragout/assembly_graph/assembly_refine.py
+@@ -11,9 +11,9 @@ from __future__ import division
+ import networkx as nx
+ import re
+ import logging
+-from ragout.six.moves import zip
++from six.moves import zip
+ try:
+-    import ragout.six.moves.queue
++    import six.moves.queue
+ except ImportError:
+     import queue as Queue
+ 
+@@ -231,7 +231,7 @@ def _shortest_path(graph, src, dst, rest
+     """
+     Finds shortest path wrt to restricted nodes
+     """
+-    queue = ragout.six.moves.queue.Queue()
++    queue = six.moves.queue.Queue()
+     queue.put(src)
+     visited = set([src])
+     parent = {src : src}
+--- a/ragout/phylogeny/inferer.py
++++ b/ragout/phylogeny/inferer.py
+@@ -15,8 +15,8 @@ from itertools import (combinations,
+                        combinations_with_replacement, chain)
+ 
+ from ragout.newick.tree import Leaf, Tree
+-from ragout.six.moves import map
+-from ragout.six.moves import zip
++from six.moves import map
++from six.moves import zip
+ 
+ class TreeInferer:
+     def __init__(self, perm_container):
+--- a/ragout/shared/datatypes.py
++++ b/ragout/shared/datatypes.py
+@@ -9,7 +9,7 @@ This module provides some common data st
+ from __future__ import absolute_import
+ from __future__ import division
+ from copy import copy
+-from ragout.six.moves import zip
++from six.moves import zip
+ 
+ 
+ class Block:


=====================================
debian/patches/series
=====================================
@@ -1,2 +1,2 @@
-# adjustSetupParsingBinaries.patch
 connected_component_subgraphs.patch
+python3.12.patch


=====================================
debian/rules
=====================================
@@ -8,7 +8,7 @@ include /usr/share/dpkg/default.mk
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
 
 %:
-	dh $@ --with python3 --buildsystem=pybuild
+	dh $@ --buildsystem=pybuild
 
 override_dh_install:
 	dh_install



View it on GitLab: https://salsa.debian.org/med-team/ragout/-/compare/66218af3889cf35593ae6d0e5e64d05867b9ad97...84127ce7e33e144bc3fa17e5bbe6a14c83b42d58

-- 
View it on GitLab: https://salsa.debian.org/med-team/ragout/-/compare/66218af3889cf35593ae6d0e5e64d05867b9ad97...84127ce7e33e144bc3fa17e5bbe6a14c83b42d58
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20240202/8fa5fae2/attachment-0001.htm>


More information about the debian-med-commit mailing list