Commit b06cbddb authored by Jeremy Hylton's avatar Jeremy Hylton

Make a new urllib package .

It consists of code from urllib, urllib2, urlparse, and robotparser.
The old modules have all been removed.  The new package has five
submodules: urllib.parse, urllib.request, urllib.response,
urllib.error, and urllib.robotparser.  The urllib.request.urlopen()
function uses the url opener from urllib2.

Note that the unittests have not been renamed for the
beta, but they will be renamed in the future.

Joint work with Senthil Kumaran.
parent a7d9be62
...@@ -7,8 +7,9 @@ Implements the Distutils 'register' command (register with the repository). ...@@ -7,8 +7,9 @@ Implements the Distutils 'register' command (register with the repository).
__revision__ = "$Id$" __revision__ = "$Id$"
import os, string, urllib2, getpass, urlparse import os, string, getpass
import io import io
import urllib.parse, urllib.request
from distutils.core import PyPIRCCommand from distutils.core import PyPIRCCommand
from distutils.errors import * from distutils.errors import *
...@@ -94,7 +95,8 @@ class register(PyPIRCCommand): ...@@ -94,7 +95,8 @@ class register(PyPIRCCommand):
def classifiers(self): def classifiers(self):
''' Fetch the list of classifiers from the server. ''' Fetch the list of classifiers from the server.
''' '''
response = urllib2.urlopen(self.repository+'?:action=list_classifiers') url = self.repository+'?:action=list_classifiers'
response = urllib.request.urlopen(url)
print(response.read()) print(response.read())
def verify_metadata(self): def verify_metadata(self):
...@@ -166,8 +168,8 @@ Your selection [default 1]: ''', end=' ') ...@@ -166,8 +168,8 @@ Your selection [default 1]: ''', end=' ')
password = getpass.getpass('Password: ') password = getpass.getpass('Password: ')
# set up the authentication # set up the authentication
auth = urllib2.HTTPPasswordMgr() auth = urllib.request.HTTPPasswordMgr()
host = urlparse.urlparse(self.repository)[1] host = urllib.parse.urlparse(self.repository)[1]
auth.add_password(self.realm, host, username, password) auth.add_password(self.realm, host, username, password)
# send the info to the server and report the result # send the info to the server and report the result
code, result = self.post_to_server(self.build_post_data('submit'), code, result = self.post_to_server(self.build_post_data('submit'),
...@@ -276,20 +278,20 @@ Your selection [default 1]: ''', end=' ') ...@@ -276,20 +278,20 @@ Your selection [default 1]: ''', end=' ')
'Content-type': 'multipart/form-data; boundary=%s; charset=utf-8'%boundary, 'Content-type': 'multipart/form-data; boundary=%s; charset=utf-8'%boundary,
'Content-length': str(len(body)) 'Content-length': str(len(body))
} }
req = urllib2.Request(self.repository, body, headers) req = urllib.request.Request(self.repository, body, headers)
# handle HTTP and include the Basic Auth handler # handle HTTP and include the Basic Auth handler
opener = urllib2.build_opener( opener = urllib.request.build_opener(
urllib2.HTTPBasicAuthHandler(password_mgr=auth) urllib.request.HTTPBasicAuthHandler(password_mgr=auth)
) )
data = '' data = ''
try: try:
result = opener.open(req) result = opener.open(req)
except urllib2.HTTPError as e: except urllib.error.HTTPError as e:
if self.show_response: if self.show_response:
data = e.fp.read() data = e.fp.read()
result = e.code, e.msg result = e.code, e.msg
except urllib2.URLError as e: except urllib.error.URLError as e:
result = 500, str(e) result = 500, str(e)
else: else:
if self.show_response: if self.show_response:
......
...@@ -13,7 +13,7 @@ import platform ...@@ -13,7 +13,7 @@ import platform
import configparser import configparser
import http.client import http.client
import base64 import base64
import urlparse import urllib.parse
class upload(PyPIRCCommand): class upload(PyPIRCCommand):
...@@ -145,10 +145,11 @@ class upload(PyPIRCCommand): ...@@ -145,10 +145,11 @@ class upload(PyPIRCCommand):
self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO) self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO)
# build the Request # build the Request
# We can't use urllib2 since we need to send the Basic # We can't use urllib since we need to send the Basic
# auth right with the first request # auth right with the first request
# TODO(jhylton): Can we fix urllib?
schema, netloc, url, params, query, fragments = \ schema, netloc, url, params, query, fragments = \
urlparse.urlparse(self.repository) urllib.parse.urlparse(self.repository)
assert not params and not query and not fragments assert not params and not query and not fragments
if schema == 'http': if schema == 'http':
http = http.client.HTTPConnection(netloc) http = http.client.HTTPConnection(netloc)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment