summaryrefslogtreecommitdiff
path: root/distutils2/command/upload.py
diff options
context:
space:
mode:
author?ric Araujo <merwok@netwok.org>2011-09-24 01:06:28 +0200
committer?ric Araujo <merwok@netwok.org>2011-09-24 01:06:28 +0200
commitd04e4c8c1027310520576e1890061799a0f64f0b (patch)
tree50a302c46be60dc998f981feaac252f04a0b43e9 /distutils2/command/upload.py
parentd126c30223b0fabb5f96fe5d2a4eefd701284780 (diff)
downloaddisutils2-d04e4c8c1027310520576e1890061799a0f64f0b.tar.gz
Start a branch to provide Distutils2 for Python 3.
This codebase is compatible with 3.1, 3.2 and 3.3. It was converted with 2to3 and a semi-automated diff/merge with packaging in 3.3 to fix some idioms. We?ve now come full circle from 2.x to 3.x to 2.x to 3.x again :) Starting from now, contributors can make patches for packaging (preferred, as the stdlib?s regrtest is very useful), distutils2 or distutils-python3, and we?ll make patches flow between versions.
Diffstat (limited to 'distutils2/command/upload.py')
-rw-r--r--distutils2/command/upload.py29
1 files changed, 10 insertions, 19 deletions
diff --git a/distutils2/command/upload.py b/distutils2/command/upload.py
index 0bdac4a..20f2be0 100644
--- a/distutils2/command/upload.py
+++ b/distutils2/command/upload.py
@@ -4,14 +4,11 @@ import os
import socket
import logging
import platform
-import urlparse
+import urllib.parse
from base64 import standard_b64encode
-try:
- from hashlib import md5
-except ImportError:
- from distutils2._backport.hashlib import md5
-from urllib2 import HTTPError
-from urllib2 import urlopen, Request
+from hashlib import md5
+from urllib.error import HTTPError
+from urllib.request import urlopen, Request
from distutils2 import logger
from distutils2.errors import PackagingOptionError
@@ -87,7 +84,7 @@ class upload(Command):
def upload_file(self, command, pyversion, filename):
# Makes sure the repository URL is compliant
scheme, netloc, url, params, query, fragments = \
- urlparse.urlparse(self.repository)
+ urllib.parse.urlparse(self.repository)
if params or query or fragments:
raise AssertionError("Incompatible url %s" % self.repository)
@@ -104,11 +101,8 @@ class upload(Command):
# Fill in the data - send all the metadata in case we need to
# register a new release
- f = open(filename, 'rb')
- try:
+ with open(filename, 'rb') as f:
content = f.read()
- finally:
- f.close()
data = self.distribution.metadata.todict()
@@ -124,11 +118,8 @@ class upload(Command):
data['comment'] = 'built for %s' % platform.platform(terse=True)
if self.sign:
- fp = open(filename + '.asc')
- try:
+ with open(filename + '.asc') as fp:
sig = fp.read()
- finally:
- fp.close()
data['gpg_signature'] = [
(os.path.basename(filename) + ".asc", sig)]
@@ -136,7 +127,7 @@ class upload(Command):
# The exact encoding of the authentication string is debated.
# Anyway PyPI only accepts ascii for both username or password.
user_pass = (self.username + ":" + self.password).encode('ascii')
- auth = "Basic " + standard_b64encode(user_pass)
+ auth = b"Basic " + standard_b64encode(user_pass)
# Build up the MIME payload for the POST data
files = []
@@ -160,10 +151,10 @@ class upload(Command):
result = urlopen(request)
status = result.code
reason = result.msg
- except socket.error, e:
+ except socket.error as e:
logger.error(e)
return
- except HTTPError, e:
+ except HTTPError as e:
status = e.code
reason = e.msg