[elbe-devel] [PATCH 1/5] Python3: change the urllib2 imports

Christian Teklenborg chris at linutronix.de
Fri Dec 6 14:08:45 CET 2019


Add the necessary urllib imports for Python3 compatibility.
Also change the module for BadStatusLine to make it Python3 compatible.

Signed-off-by: Christian Teklenborg <chris at linutronix.de>
---
 elbepack/commands/control.py |  8 ++++++--
 elbepack/commands/prjrepo.py |  9 +++++++--
 elbepack/elbexml.py          | 24 +++++++++++++-----------
 elbepack/pbuilder.py         |  8 +++++---
 elbepack/soapclient.py       | 10 +++++++---
 elbepack/xmlpreprocess.py    | 10 +++++++---
 6 files changed, 45 insertions(+), 24 deletions(-)

diff --git a/elbepack/commands/control.py b/elbepack/commands/control.py
index cb539b70..4df4c4ef 100644
--- a/elbepack/commands/control.py
+++ b/elbepack/commands/control.py
@@ -11,8 +11,6 @@ import socket
 import sys
 
 from optparse import (OptionParser, OptionGroup)
-from urllib2 import URLError
-from httplib import BadStatusLine
 
 from suds import WebFault
 
@@ -21,6 +19,12 @@ from elbepack.version import elbe_version
 from elbepack.config import cfg
 from elbepack.elbexml import ValidationMode
 
+try:
+    from urllib.error import URLError
+    from http.client import HTTPException, BadStatusLine
+except ImportError:
+    from urllib2 import URLError
+    from httplib import HTTPException, BadStatusLine
 
 def run_command(argv):
 
diff --git a/elbepack/commands/prjrepo.py b/elbepack/commands/prjrepo.py
index 51e2b845..5877b64f 100644
--- a/elbepack/commands/prjrepo.py
+++ b/elbepack/commands/prjrepo.py
@@ -11,8 +11,7 @@ import socket
 import sys
 
 from optparse import (OptionParser, OptionGroup)
-from urllib2 import URLError
-from httplib import BadStatusLine
+
 
 from suds import WebFault
 
@@ -20,6 +19,12 @@ from elbepack.soapclient import RepoAction, ElbeSoapClient
 from elbepack.version import elbe_version
 from elbepack.config import cfg
 
+try:
+    from urllib.error import URLError
+    from http.client import BadStatusLine
+except ImportError:
+    from urllib2 import URLError
+    from httplib import BadStatusline
 
 def run_command(argv):
 
diff --git a/elbepack/elbexml.py b/elbepack/elbexml.py
index e281bbd1..5994e87b 100644
--- a/elbepack/elbexml.py
+++ b/elbepack/elbexml.py
@@ -10,14 +10,16 @@
 
 import os
 import re
-import urllib2
-
 from elbepack.treeutils import etree
 from elbepack.validate import validate_xml
 from elbepack.xmldefaults import ElbeDefaults
 
 from elbepack.version import elbe_version, is_devel
-
+try:
+    from urllib.request import urlopen, install_opener, build_opener, HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler
+    from urllib.error import URLError
+except ImportError:
+    from urllib2 import urlopen, install_opener, build_opener, URLError
 
 class ValidationError(Exception):
     def __init__(self, validation):
@@ -178,11 +180,11 @@ class ElbeXML(object):
 
     def validate_repo(self, r):
         try:
-            fp = urllib2.urlopen(r["url"] + "InRelease", None, 10)
-        except urllib2.URLError:
+            fp = urlopen(r["url"] + "InRelease", None, 10)
+        except URLError:
             try:
-                fp = urllib2.urlopen(r["url"] + "Release", None, 10)
-            except urllib2.URLError:
+                fp = urlopen(r["url"] + "Release", None, 10)
+            except URLError:
                 return False
 
         ret = False
@@ -269,10 +271,10 @@ class ElbeXML(object):
             os.environ["https_proxy"] = ""
             os.environ["no_proxy"] = ""
 
-        passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
-        authhandler = urllib2.HTTPBasicAuthHandler(passman)
-        opener = urllib2.build_opener(authhandler)
-        urllib2.install_opener(opener)
+        passman = HTTPPasswordMgrWithDefaultRealm()
+        authhandler = HTTPBasicAuthHandler(passman)
+        opener = build_opener(authhandler)
+        install_opener(opener)
 
         for r in repos:
             if '@' in r["url"]:
diff --git a/elbepack/pbuilder.py b/elbepack/pbuilder.py
index 32da14ce..43b7b423 100644
--- a/elbepack/pbuilder.py
+++ b/elbepack/pbuilder.py
@@ -7,8 +7,10 @@
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 import os
-import urllib2
-
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib2 import urlopen
 
 def pbuilder_write_config(builddir, xml):
     distname = xml.prj.text('suite')
@@ -95,7 +97,7 @@ def mirror_script_add_key_text(mirror, key_text):
 
 def mirror_script_add_key_url(mirror, key_url):
     key_url = key_url.replace("LOCALMACHINE", "10.0.2.2")
-    key_conn = urllib2.urlopen(key_url, None, 10)
+    key_conn = urlopen(key_url, None, 10)
     key_text = key_conn.read()
     key_conn.close()
 
diff --git a/elbepack/soapclient.py b/elbepack/soapclient.py
index fa562762..51cd474f 100644
--- a/elbepack/soapclient.py
+++ b/elbepack/soapclient.py
@@ -16,8 +16,7 @@ import os
 import fnmatch
 
 from datetime import datetime
-from urllib2 import URLError
-from httplib import BadStatusLine
+
 
 import deb822   # package for dealing with Debian related data
 
@@ -27,7 +26,12 @@ from suds import WebFault
 from elbepack.filesystem import Filesystem
 from elbepack.elbexml import ElbeXML, ValidationMode
 from elbepack.version import elbe_version, elbe_initvm_packagelist
-
+try:
+    from urllib.error import URLError
+    from http.client import BadStatusLine
+except ImportError:
+    from urllib2 import URLError
+    from httplib import BadStatusLine
 
 def set_suds_debug(debug):
     import logging
diff --git a/elbepack/xmlpreprocess.py b/elbepack/xmlpreprocess.py
index 598ced45..e310048e 100644
--- a/elbepack/xmlpreprocess.py
+++ b/elbepack/xmlpreprocess.py
@@ -8,7 +8,6 @@
 from __future__ import print_function
 
 import sys
-import urllib2
 
 from tempfile import NamedTemporaryFile
 from optparse import OptionGroup
@@ -22,6 +21,11 @@ from elbepack.directories import elbe_exe
 from elbepack.shellhelper import command_out_stderr, CommandError
 from elbepack.isooptions import iso_option_valid
 from elbepack.validate import error_log_to_strings
+try:
+    from urllib.request import urlopen
+    from urllib.error import HTTPError
+except ImportError:
+    from urllib2 import urlopen, HTTPError
 
 # list of sections that are allowed to exists multiple times before
 # preprocess and that childrens are merge into one section during preprocess
@@ -39,10 +43,10 @@ def preprocess_pgp_key(xml):
         print("[WARN] <key>%s</key> is deprecated.  You should use raw-key instead." % key.text)
         try:
             keyurl = key.text.strip().replace('LOCALMACHINE', 'localhost')
-            myKey = urllib2.urlopen(keyurl).read()
+            myKey = urlopen(keyurl).read()
             key.tag = "raw-key"
             key.text = "\n%s\n" % myKey
-        except urllib2.HTTPError as E:
+        except HTTPError as E:
             raise XMLPreprocessError("Invalid PGP Key URL in <key> tag: %s" % keyurl)
 
 def preprocess_iso_option(xml):
-- 
2.20.1




More information about the elbe-devel mailing list