diff --git a/Lib/nturl2path.py b/Lib/nturl2path.py
index 9dde299..1cfe827 100644
--- a/Lib/nturl2path.py
+++ b/Lib/nturl2path.py
@@ -7,7 +7,7 @@
     # ///C|/foo/bar/spam.foo
     # becomes
     # C:\foo\bar\spam.foo
-    import string, urllib
+    import string, urllib.parse
     # Windows itself uses ":" even in URLs.
     url = url.replace(':', '|')
     if not '|' in url:
@@ -19,7 +19,7 @@
             url = url[2:]
         components = url.split('/')
         # make sure not to convert quoted slashes :-)
-        return urllib.unquote('\\'.join(components))
+        return urllib.parse.unquote('\\'.join(components))
     comp = url.split('|')
     if len(comp) != 2 or comp[0][-1] not in string.ascii_letters:
         error = 'Bad URL: ' + url
@@ -29,7 +29,7 @@
     path = drive + ':'
     for  comp in components:
         if comp:
-            path = path + '\\' + urllib.unquote(comp)
+            path = path + '\\' + urllib.parse.unquote(comp)
     return path
 
 def pathname2url(p):
@@ -39,7 +39,7 @@
     # C:\foo\bar\spam.foo
     # becomes
     # ///C|/foo/bar/spam.foo
-    import urllib
+    import urllib.parse
     if not ':' in p:
         # No drive specifier, just convert slashes and quote the name
         if p[:2] == '\\\\':
@@ -48,16 +48,16 @@
         # (notice doubling of slashes at the start of the path)
             p = '\\\\' + p
         components = p.split('\\')
-        return urllib.quote('/'.join(components))
+        return urllib.parse.quote('/'.join(components))
     comp = p.split(':')
     if len(comp) != 2 or len(comp[0]) > 1:
         error = 'Bad path: ' + p
         raise IOError(error)
 
-    drive = urllib.quote(comp[0].upper())
+    drive = urllib.parse.quote(comp[0].upper())
     components = comp[1].split('\\')
     path = '///' + drive + '|'
     for comp in components:
         if comp:
-            path = path + '/' + urllib.quote(comp)
+            path = path + '/' + urllib.parse.quote(comp)
     return path
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index cd4729a..da13147 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -105,7 +105,6 @@
     _have_ssl = False
 else:
     _have_ssl = True
-assert _have_ssl
 
 # used in User-Agent header sent
 __version__ = sys.version[:3]
@@ -417,8 +416,6 @@
                        FTPHandler, FileHandler, HTTPErrorProcessor]
     if hasattr(http.client, "HTTPSConnection"):
         default_classes.append(HTTPSHandler)
-    else:
-        import pdb; pdb.set_trace()
     skip = set()
     for klass in default_classes:
         for check in handlers:
