[Python-checkins] distutils2: removed upload_docs shot

tarek.ziade python-checkins at python.org
Sun Jul 4 11:48:38 CEST 2010


tarek.ziade pushed ed6149b35a96 to distutils2:

http://hg.python.org/distutils2/rev/ed6149b35a96
changeset:   262:ed6149b35a96
user:        Konrad Delong <konryd at gmail.com>
date:        Thu May 13 08:04:08 2010 -0400
summary:     removed upload_docs shot
files:       src/distutils2/command/upload_docs.py, src/distutils2/tests/test_upload_docs.py

diff --git a/src/distutils2/command/upload_docs.py b/src/distutils2/command/upload_docs.py
deleted file mode 100644
--- a/src/distutils2/command/upload_docs.py
+++ /dev/null
@@ -1,174 +0,0 @@
-# -*- coding: utf-8 -*-
-"""upload_docs
-
-Implements a Distutils2 'upload_docs' subcommand (upload documentation to
-PyPI's packages.python.org).
-"""
-
-import os
-import socket
-import zipfile
-import httplib
-import base64
-import urlparse
-import tempfile
-import sys
-
-from distutils2 import log
-from distutils2.errors import DistutilsOptionError
-from distutils2.command.upload import upload
-
-_IS_PYTHON3 = sys.version > '3'
-
-try:
-    bytes
-except NameError:
-    bytes = str
-
-def b(str_or_bytes):
-    """Return bytes by either encoding the argument as ASCII or simply return
-    the argument as-is."""
-    if not isinstance(str_or_bytes, bytes):
-        return str_or_bytes.encode('ascii')
-    else:
-        return str_or_bytes
-
-
-class upload_docs(upload):
-
-    description = 'Upload documentation to PyPI'
-
-    user_options = [
-        ('repository=', 'r',
-         "url of repository [default: %s]" % upload.DEFAULT_REPOSITORY),
-        ('show-response', None,
-         'display full response text from server'),
-        ('upload-dir=', None, 'directory to upload'),
-        ]
-    boolean_options = upload.boolean_options
-
-    def initialize_options(self):
-        upload.initialize_options(self)
-        self.upload_dir = None
-
-    def finalize_options(self):
-        upload.finalize_options(self)
-        if self.upload_dir is None:
-            build = self.get_finalized_command('build')
-            self.upload_dir = os.path.join(build.build_base, 'docs')
-            self.mkpath(self.upload_dir)
-        self.ensure_dirname('upload_dir')
-        self.announce('Using upload directory %s' % self.upload_dir)
-
-    def create_zipfile(self):
-        name = self.distribution.metadata['Name']
-        tmp_dir = tempfile.mkdtemp()
-        tmp_file = os.path.join(tmp_dir, "%s.zip" % name)
-        zip_file = zipfile.ZipFile(tmp_file, "w")
-        for root, dirs, files in os.walk(self.upload_dir):
-            if root == self.upload_dir and not files:
-                raise DistutilsOptionError(
-                    "no files found in upload directory '%s'"
-                    % self.upload_dir)
-            for name in files:
-                full = os.path.join(root, name)
-                relative = root[len(self.upload_dir):].lstrip(os.path.sep)
-                dest = os.path.join(relative, name)
-                zip_file.write(full, dest)
-        zip_file.close()
-        return tmp_file
-
-    def run(self):
-        zip_file = self.create_zipfile()
-        self.upload_file(zip_file)
-
-    def upload_file(self, filename):
-        content = open(filename, 'rb').read()
-        meta = self.distribution.metadata
-        data = {
-            ':action': 'doc_upload',
-            'name': meta['Name'],
-            'content': (os.path.basename(filename), content),
-        }
-        # set up the authentication
-        credentials = self.username + ':' + self.password
-        if _IS_PYTHON3:  # base64 only works with bytes in Python 3.
-            encoded_creds = base64.encodebytes(credentials.encode('utf8'))
-            auth = bytes("Basic ")
-        else:
-            encoded_creds = base64.encodestring(credentials)
-            auth = "Basic "
-        auth += encoded_creds.strip()
-
-        # Build up the MIME payload for the POST data
-        boundary = b('--------------GHSKFJDLGDS7543FJKLFHRE75642756743254')
-        sep_boundary = b('\n--') + boundary
-        end_boundary = sep_boundary + b('--')
-        body = []
-        for key, values in data.items():
-            # handle multiple entries for the same name
-            if type(values) != type([]):
-                values = [values]
-            for value in values:
-                if type(value) is tuple:
-                    fn = b(';filename="%s"' % value[0])
-                    value = value[1]
-                else:
-                    fn = b("")
-                body.append(sep_boundary)
-                body.append(b('\nContent-Disposition: form-data; name="%s"'%key))
-                body.append(fn)
-                body.append(b("\n\n"))
-                body.append(b(value))
-                if value and value[-1] == b('\r'):
-                    body.append(b('\n'))  # write an extra newline (lurve Macs)
-        body.append(end_boundary)
-        body.append(b("\n"))
-        body = b('').join(body)
-
-        self.announce("Submitting documentation to %s" % (self.repository),
-                      log.INFO)
-
-        # build the Request
-        # We can't use urllib2 since we need to send the Basic
-        # auth right with the first request
-        schema, netloc, url, params, query, fragments = \
-            urlparse.urlparse(self.repository)
-        assert not params and not query and not fragments
-        if schema == 'http':
-            conn = httplib.HTTPConnection(netloc)
-        elif schema == 'https':
-            conn = httplib.HTTPSConnection(netloc)
-        else:
-            raise AssertionError("unsupported schema "+schema)
-
-        data = ''
-        loglevel = log.INFO
-        try:
-            conn.connect()
-            conn.putrequest("POST", url)
-            conn.putheader('Content-type',
-                           'multipart/form-data; boundary=%s'%boundary)
-            conn.putheader('Content-length', str(len(body)))
-            conn.putheader('Authorization', auth)
-            conn.endheaders()
-            conn.send(body)
-        except socket.error, e:
-            self.announce(str(e), log.ERROR)
-            return
-
-        r = conn.getresponse()
-        if r.status == 200:
-            self.announce('Server response (%s): %s' % (r.status, r.reason),
-                          log.INFO)
-        elif r.status == 301:
-            location = r.getheader('Location')
-            if location is None:
-                location = 'http://packages.python.org/%s/' % meta['Name']
-            self.announce('Upload successful. Visit %s' % location,
-                          log.INFO)
-        else:
-            self.announce('Upload failed (%s): %s' % (r.status, r.reason),
-                          log.ERROR)
-        if self.show_response:
-            print '-'*75, r.read(), '-'*75
diff --git a/src/distutils2/tests/test_upload_docs.py b/src/distutils2/tests/test_upload_docs.py
deleted file mode 100644
--- a/src/distutils2/tests/test_upload_docs.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""build_ext tests
-"""
-import sys, os, shutil, tempfile, unittest2, site, zipfile
-from distutils2.command.upload_docs import upload_docs
-from distutils2.dist import Distribution
-
-SETUP_PY = """\
-from distutils2.core import setup
-
-setup(name='foo')
-"""
-
-class TestUploadDocsTest(unittest2.TestCase):
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-        setup = os.path.join(self.dir, 'setup.py')
-        f = open(setup, 'w')
-        f.write(SETUP_PY)
-        f.close()
-        self.old_cwd = os.getcwd()
-        os.chdir(self.dir)
-        
-        self.upload_dir = os.path.join(self.dir, 'build')
-        os.mkdir(self.upload_dir)
-        
-        # A test document.
-        f = open(os.path.join(self.upload_dir, 'index.html'), 'w')
-        f.write("Hello world.")
-        f.close()
-        
-        # An empty folder.
-        os.mkdir(os.path.join(self.upload_dir, 'empty'))
-        
-        if sys.version >= "2.6":
-            self.old_base = site.USER_BASE
-            site.USER_BASE = upload_docs.USER_BASE = tempfile.mkdtemp()
-            self.old_site = site.USER_SITE
-            site.USER_SITE = upload_docs.USER_SITE = tempfile.mkdtemp()
-    
-    def tearDown(self):
-        os.chdir(self.old_cwd)
-        shutil.rmtree(self.dir)
-        if sys.version >= "2.6":
-            shutil.rmtree(site.USER_BASE)
-            shutil.rmtree(site.USER_SITE)
-            site.USER_BASE = self.old_base
-            site.USER_SITE = self.old_site
-
-    def test_create_zipfile(self):
-        # Test to make sure zipfile creation handles common cases.
-        # This explicitly includes a folder containing an empty folder.
-        
-        dist = Distribution()
-        
-        cmd = upload_docs(dist)
-        cmd.upload_dir = self.upload_dir
-        zip_file = cmd.create_zipfile()
-        
-        assert zipfile.is_zipfile(zip_file)
-        
-        zip_f = zipfile.ZipFile(zip_file) # woh...
-        
-        assert zip_f.namelist() == ['index.html']
-
-def test_suite():
-    return unittest2.makeSuite(TestUploadDocsTest)
-
-if __name__ == "__main__":
-    unittest2.main(defaultTest="test_suite")

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list