[Reportbug-commits] [reportbug] 02/32: port reportbug.urlutils to py3k

Sandro Tosi morph at moszumanska.debian.org
Thu Dec 1 01:36:51 UTC 2016


This is an automated email from the git hooks/post-receive script.

morph pushed a commit to branch master
in repository reportbug.

commit 7239d909714662634822429d712938f1a90525b2
Author: Sandro Tosi <morph at debian.org>
Date:   Sun Jun 19 13:01:28 2016 +0100

    port reportbug.urlutils to py3k
---
 reportbug/urlutils.py | 72 +++++++++++++++++++++++++--------------------------
 test/test_urlutils.py |  6 ++---
 2 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/reportbug/urlutils.py b/reportbug/urlutils.py
index ed14796..f80d1c7 100644
--- a/reportbug/urlutils.py
+++ b/reportbug/urlutils.py
@@ -21,22 +21,22 @@
 #  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 #  SOFTWARE.
 
-import httplib
-import urllib
-import urllib2
+import http.client
+import urllib.request, urllib.parse, urllib.error
+import urllib.request, urllib.error, urllib.parse
 import getpass
 import re
 import socket
-import commands
+import subprocess
 import os
 import sys
 import webbrowser
 
-from exceptions import (
+from .exceptions import (
     NoNetwork,
 )
 
-from __init__ import VERSION_NUMBER
+from .__init__ import VERSION_NUMBER
 
 UA_STR = 'reportbug/' + VERSION_NUMBER + ' (Debian)'
 
@@ -46,7 +46,7 @@ def decode(page):
     # print page.info().headers
     encoding = page.info().get("Content-Encoding")
     if encoding in ('gzip', 'x-gzip', 'deflate'):
-        from cStringIO import StringIO
+        from io import StringIO
         # cannot seek in socket descriptors, so must get content now
         content = page.read()
         if encoding == 'deflate':
@@ -56,9 +56,9 @@ def decode(page):
             import gzip
             fp = gzip.GzipFile('', 'rb', 9, StringIO(content))
         # remove content-encoding header
-        headers = httplib.HTTPMessage(StringIO(""))
+        headers = http.client.HTTPMessage(StringIO(""))
         ceheader = re.compile(r"(?i)content-encoding:")
-        for h in page.info().keys():
+        for h in list(page.info().keys()):
             if not ceheader.match(h):
                 headers[h] = page.info()[h]
         newpage = urllib.addinfourl(fp, headers, page.geturl())
@@ -71,28 +71,28 @@ def decode(page):
     return page
 
 
-class HttpWithGzipHandler(urllib2.HTTPHandler):
+class HttpWithGzipHandler(urllib.request.HTTPHandler):
     "support gzip encoding"
 
     def http_open(self, req):
-        return decode(urllib2.HTTPHandler.http_open(self, req))
+        return decode(urllib.request.HTTPHandler.http_open(self, req))
 
 
-if hasattr(httplib, 'HTTPS'):
-    class HttpsWithGzipHandler(urllib2.HTTPSHandler):
+if hasattr(http.client, 'HTTPS'):
+    class HttpsWithGzipHandler(urllib.request.HTTPSHandler):
         "support gzip encoding"
 
         def https_open(self, req):
-            return decode(urllib2.HTTPSHandler.https_open(self, req))
+            return decode(urllib.request.HTTPSHandler.https_open(self, req))
 
 
-class handlepasswd(urllib2.HTTPPasswordMgrWithDefaultRealm):
+class handlepasswd(urllib.request.HTTPPasswordMgrWithDefaultRealm):
     def find_user_password(self, realm, authurl):
-        user, password = urllib2.HTTPPasswordMgrWithDefaultRealm.find_user_password(self, realm, authurl)
+        user, password = urllib.request.HTTPPasswordMgrWithDefaultRealm.find_user_password(self, realm, authurl)
         if user is not None:
             return user, password
 
-        user = raw_input('Enter username for %s at %s: ' % (realm, authurl))
+        user = input('Enter username for %s at %s: ' % (realm, authurl))
         password = getpass.getpass(
             "Enter password for %s in %s at %s: " % (user, realm, authurl))
         self.add_password(realm, authurl, user, password)
@@ -106,29 +106,29 @@ def urlopen(url, proxies=None, timeout=60, data=None):
     global _opener
 
     if not proxies:
-        proxies = urllib.getproxies()
+        proxies = urllib.request.getproxies()
 
     headers = {'User-Agent': UA_STR,
                'Accept-Encoding': 'gzip;q=1.0, deflate;q=0.9, identity;q=0.5'}
 
-    req = urllib2.Request(url, data, headers)
+    req = urllib.request.Request(url, data, headers)
 
-    proxy_support = urllib2.ProxyHandler(proxies)
+    proxy_support = urllib.request.ProxyHandler(proxies)
     if _opener is None:
         pwd_manager = handlepasswd()
         handlers = [proxy_support,
-                    urllib2.UnknownHandler, HttpWithGzipHandler,
-                    urllib2.HTTPBasicAuthHandler(pwd_manager),
-                    urllib2.ProxyBasicAuthHandler(pwd_manager),
-                    urllib2.HTTPDigestAuthHandler(pwd_manager),
-                    urllib2.ProxyDigestAuthHandler(pwd_manager),
-                    urllib2.HTTPDefaultErrorHandler, urllib2.HTTPRedirectHandler,
+                    urllib.request.UnknownHandler, HttpWithGzipHandler,
+                    urllib.request.HTTPBasicAuthHandler(pwd_manager),
+                    urllib.request.ProxyBasicAuthHandler(pwd_manager),
+                    urllib.request.HTTPDigestAuthHandler(pwd_manager),
+                    urllib.request.ProxyDigestAuthHandler(pwd_manager),
+                    urllib.request.HTTPDefaultErrorHandler, urllib.request.HTTPRedirectHandler,
                     ]
-        if hasattr(httplib, 'HTTPS'):
+        if hasattr(http.client, 'HTTPS'):
             handlers.append(HttpsWithGzipHandler)
-        _opener = urllib2.build_opener(*handlers)
+        _opener = urllib.request.build_opener(*handlers)
         # print _opener.handlers
-        urllib2.install_opener(_opener)
+        urllib.request.install_opener(_opener)
 
     return _opener.open(req, timeout=timeout)
 
@@ -140,28 +140,28 @@ def open_url(url, http_proxy=None, timeout=60):
     # in #572316 we set a user-configurable timeout
     socket.setdefaulttimeout(timeout)
 
-    proxies = urllib.getproxies()
+    proxies = urllib.request.getproxies()
     if http_proxy:
         proxies['http'] = http_proxy
 
     try:
         page = urlopen(url, proxies, timeout)
-    except urllib2.HTTPError, x:
+    except urllib.error.HTTPError as x:
         if x.code in (404, 500, 503):
             return None
         else:
             raise
-    except (socket.gaierror, socket.error, urllib2.URLError), x:
+    except (socket.gaierror, socket.error, urllib.error.URLError) as x:
         raise NoNetwork
-    except IOError, data:
+    except IOError as data:
         if data and data[0] == 'http error' and data[1] == 404:
             return None
         else:
             raise NoNetwork
     except TypeError:
-        print >> sys.stderr, "http_proxy environment variable must be formatted as a valid URI"
+        print("http_proxy environment variable must be formatted as a valid URI", file=sys.stderr)
         raise NoNetwork
-    except httplib.HTTPException, exc:
+    except http.client.HTTPException as exc:
         exc_name = exc.__class__.__name__
         message = "Failed to open %(url)r (%(exc_name)s: %(exc)s)" % vars()
         raise NoNetwork(message)
@@ -170,7 +170,7 @@ def open_url(url, http_proxy=None, timeout=60):
 
 def launch_browser(url):
     if not os.system('command -v xdg-open >/dev/null 2>&1'):
-        cmd = 'xdg-open' + commands.mkarg(url)
+        cmd = 'xdg-open' + subprocess.mkarg(url)
         os.system(cmd)
         return
 
diff --git a/test/test_urlutils.py b/test/test_urlutils.py
index 0fd32d6..5901ea3 100644
--- a/test/test_urlutils.py
+++ b/test/test_urlutils.py
@@ -1,15 +1,15 @@
-import unittest2
+import unittest
 
 from nose.plugins.attrib import attr
 
 from reportbug import urlutils
 
 
-class TestNetwork(unittest2.TestCase):
+class TestNetwork(unittest.TestCase):
 
     @attr('network')  # mark the test as using network
     def test_open_url(self):
 
         page = urlutils.open_url('https://bugs.debian.org/reportbug')
         content = page.read()
-        self.assertIsNotNone(page.info().headers)
+        self.assertIsNotNone(page.info().keys())

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reportbug/reportbug.git



More information about the Reportbug-commits mailing list