diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2016-05-31 21:45:38 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2016-05-31 21:45:38 -0400 |
commit | 81d8a9560f4a14fe5376f4d86643aa6bdf361869 (patch) | |
tree | a2871976267e620468a861646fd8d343bb0a06dc /setuptools/command/upload_docs.py | |
parent | daf695c9c05db4f64d0c7d977054cf0a450d4839 (diff) | |
download | external_python_setuptools-81d8a9560f4a14fe5376f4d86643aa6bdf361869.tar.gz external_python_setuptools-81d8a9560f4a14fe5376f4d86643aa6bdf361869.tar.bz2 external_python_setuptools-81d8a9560f4a14fe5376f4d86643aa6bdf361869.zip |
Extract method for _build_parts.
Diffstat (limited to 'setuptools/command/upload_docs.py')
-rw-r--r-- | setuptools/command/upload_docs.py | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/setuptools/command/upload_docs.py b/setuptools/command/upload_docs.py index 638a1f6d..7136fea0 100644 --- a/setuptools/command/upload_docs.py +++ b/setuptools/command/upload_docs.py @@ -13,6 +13,7 @@ import socket import zipfile import tempfile import shutil +import itertools from setuptools.extern import six from setuptools.extern.six.moves import http_client, urllib @@ -95,6 +96,26 @@ class upload_docs(upload): finally: shutil.rmtree(tmp_dir) + @staticmethod + def _build_parts(data, sep_boundary): + for key, values in six.iteritems(data): + title = '\nContent-Disposition: form-data; name="%s"' % key + # handle multiple entries for the same name + if not isinstance(values, list): + values = [values] + for value in values: + if type(value) is tuple: + title += '; filename="%s"' % value[0] + value = value[1] + else: + value = _encode(value) + yield sep_boundary + yield _encode(title) + yield b"\n\n" + yield value + if value and value[-1:] == b'\r': + yield b'\n' # write an extra newline (lurve Macs) + def upload_file(self, filename): with open(filename, 'rb') as f: content = f.read() @@ -115,27 +136,12 @@ class upload_docs(upload): boundary = b'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' sep_boundary = b'\n--' + boundary end_boundary = sep_boundary + b'--' - body = [] - for key, values in six.iteritems(data): - title = '\nContent-Disposition: form-data; name="%s"' % key - # handle multiple entries for the same name - if not isinstance(values, list): - values = [values] - for value in values: - if type(value) is tuple: - title += '; filename="%s"' % value[0] - value = value[1] - else: - value = _encode(value) - body.append(sep_boundary) - body.append(_encode(title)) - body.append(b"\n\n") - body.append(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) + end_items = end_boundary, b"\n", + body_items = itertools.chain( + self._build_parts(data, sep_boundary), + end_items, + ) + body = b''.join(body_items) self.announce("Submitting documentation to %s" % (self.repository), log.INFO) |