Hello community,

here is the log from the commit of package python3-setuptools for 
openSUSE:Factory checked in at 2016-06-29 15:09:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-setuptools (Old)
 and      /work/SRC/openSUSE:Factory/.python3-setuptools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-setuptools"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-setuptools/python3-setuptools.changes    
2016-06-03 16:34:17.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python3-setuptools.new/python3-setuptools.changes   
    2016-06-29 15:09:05.000000000 +0200
@@ -1,0 +2,44 @@
+Fri Jun 24 16:38:56 UTC 2016 - a...@gmx.de
+
+- update to version 23.1.0:
+  * #619: Deprecated tag_svn_revision distribution option.
+
+-------------------------------------------------------------------
+Sat Jun 18 15:08:45 UTC 2016 - a...@gmx.de
+
+- update to version 23.0.0:
+  * #611: Removed ARM executables for CLI and GUI script launchers on
+    Windows. If this was a feature you cared about, please comment in
+    the ticket.
+  * #604: Removed docs building support. The project now relies on
+    documentation hosted at https://setuptools.readthedocs.io/.
+
+- changes from version 22.0.5:
+  * #604: Restore repository for upload_docs command to restore
+    publishing of docs during release.
+
+- changes from version 22.0.4:
+  * #589: Upload releases to pypi.io using the upload hostname and
+    legacy path.
+
+- changes from version 22.0.3:
+  * #589: Releases are now uploaded to pypi.io (Warehouse) even when
+    releases are made on Twine via Travis.
+
+- changes from version 22.0.2:
+  * #589: Releases are now uploaded to pypi.io (Warehouse).
+
+- changes from version 22.0.1:
+  * #190: On Python 2, if unicode is passed for packages to build_py
+    command, it will be handled just as with text on Python 3.
+
+- changes from version 22.0.0:
+  * Intended to be v21.3.0, but jaraco accidentally released as a
+    major bump.
+  * #598: Setuptools now lists itself first in the User-Agent for web
+    requests, better following the guidelines in RFC 7231.
+
+- changes from version 21.2.2:
+  * Minor fixes to changelog and docs.
+
+-------------------------------------------------------------------

Old:
----
  setuptools-21.2.1.tar.gz

New:
----
  setuptools-23.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-setuptools.spec ++++++
--- /var/tmp/diff_new_pack.6Eokw4/_old  2016-06-29 15:09:06.000000000 +0200
+++ /var/tmp/diff_new_pack.6Eokw4/_new  2016-06-29 15:09:06.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python3-setuptools
-Version:        21.2.1
+Version:        23.1.0
 Release:        0
 Url:            http://pypi.python.org/pypi/setuptools
 Summary:        Easily download, build, install, upgrade, and uninstall Python 
packages

++++++ setuptools-21.2.1.tar.gz -> setuptools-23.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/CHANGES.rst 
new/setuptools-23.1.0/CHANGES.rst
--- old/setuptools-21.2.1/CHANGES.rst   2016-05-22 22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/CHANGES.rst   2016-06-24 16:22:31.000000000 +0200
@@ -2,6 +2,68 @@
 CHANGES
 =======
 
+v23.1.0
+-------
+
+* #619: Deprecated ``tag_svn_revision`` distribution
+  option.
+
+v23.0.0
+-------
+
+* #611: Removed ARM executables for CLI and GUI script
+  launchers on Windows. If this was a feature you cared
+  about, please comment in the ticket.
+* #604: Removed docs building support. The project
+  now relies on documentation hosted at
+  https://setuptools.readthedocs.io/.
+
+v22.0.5
+-------
+
+* #604: Restore repository for upload_docs command
+  to restore publishing of docs during release.
+
+v22.0.4
+-------
+
+* #589: Upload releases to pypi.io using the upload
+  hostname and legacy path.
+
+v22.0.3
+-------
+
+* #589: Releases are now uploaded to pypi.io (Warehouse)
+  even when releases are made on Twine via Travis.
+
+v22.0.2
+-------
+
+* #589: Releases are now uploaded to pypi.io (Warehouse).
+
+v22.0.1
+-------
+
+* #190: On Python 2, if unicode is passed for packages to
+  ``build_py`` command, it will be handled just as with
+  text on Python 3.
+
+v22.0.0
+-------
+
+Intended to be v21.3.0, but jaraco accidentally released as
+a major bump.
+
+* #598: Setuptools now lists itself first in the User-Agent
+  for web requests, better following the guidelines in
+  `RFC 7231
+  <https://tools.ietf.org/html/rfc7231#section-5.5.3>`_.
+
+v21.2.2
+-------
+
+* Minor fixes to changelog and docs.
+
 v21.2.1
 -------
 
@@ -109,7 +171,7 @@
 20.5
 ----
 
-* BB Pull Request #185: Add support for environment markers
+* BB Pull Request #185, #470: Add support for environment markers
   in requirements in install_requires, setup_requires,
   tests_require as well as adding a test for the existing
   extra_requires machinery.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/PKG-INFO 
new/setuptools-23.1.0/PKG-INFO
--- old/setuptools-21.2.1/PKG-INFO      2016-05-22 22:14:31.000000000 +0200
+++ new/setuptools-23.1.0/PKG-INFO      2016-06-24 16:22:50.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: setuptools
-Version: 21.2.1
+Version: 23.1.0
 Summary: Easily download, build, install, upgrade, and uninstall Python 
packages
 Home-page: https://github.com/pypa/setuptools
 Author: Python Packaging Authority
@@ -13,7 +13,8 @@
         .. contents:: **Table of Contents**
         
         
-        `Change History <https://pythonhosted.org/setuptools/history.html>`_.
+        .. image:: https://setuptools.readthedocs.io/en/latest/?badge=latest
+            :target: https://setuptools.readthedocs.io
         
         -------------------------
         Installation Instructions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/README.rst 
new/setuptools-23.1.0/README.rst
--- old/setuptools-21.2.1/README.rst    2016-05-22 22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/README.rst    2016-06-24 16:22:31.000000000 +0200
@@ -5,7 +5,8 @@
 .. contents:: **Table of Contents**
 
 
-`Change History <https://pythonhosted.org/setuptools/history.html>`_.
+.. image:: https://setuptools.readthedocs.io/en/latest/?badge=latest
+    :target: https://setuptools.readthedocs.io
 
 -------------------------
 Installation Instructions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/docs/conf.py 
new/setuptools-23.1.0/docs/conf.py
--- old/setuptools-21.2.1/docs/conf.py  2016-05-22 22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/docs/conf.py  2016-06-24 16:22:31.000000000 +0200
@@ -200,7 +200,7 @@
 #latex_use_modindex = True
 
 link_files = {
-    'CHANGES.rst': dict(
+    '../CHANGES.rst': dict(
         using=dict(
             BB='https://bitbucket.org',
             GH='https://github.com',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/docs/easy_install.txt 
new/setuptools-23.1.0/docs/easy_install.txt
--- old/setuptools-21.2.1/docs/easy_install.txt 2016-05-22 22:12:04.000000000 
+0200
+++ new/setuptools-23.1.0/docs/easy_install.txt 2016-06-24 16:22:31.000000000 
+0200
@@ -677,7 +677,7 @@
 until and unless you override them explicitly in an ``[easy_install]`` section.
 
 For more information, see also the current Python documentation on the `use and
-location of distutils configuration files 
<http://docs.python.org/inst/config-syntax.html>`_.
+location of distutils configuration files 
<https://docs.python.org/install/index.html#inst-config-files>`_.
 
 Notice that ``easy_install`` will use the ``setup.cfg`` from the current
 working directory only if it was triggered from ``setup.py`` through the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/docs/requirements.txt 
new/setuptools-23.1.0/docs/requirements.txt
--- old/setuptools-21.2.1/docs/requirements.txt 1970-01-01 01:00:00.000000000 
+0100
+++ new/setuptools-23.1.0/docs/requirements.txt 2016-06-24 16:22:31.000000000 
+0200
@@ -0,0 +1 @@
+rst.linker>=1.6.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/docs/setuptools.txt 
new/setuptools-23.1.0/docs/setuptools.txt
--- old/setuptools-21.2.1/docs/setuptools.txt   2016-05-22 22:12:04.000000000 
+0200
+++ new/setuptools-23.1.0/docs/setuptools.txt   2016-06-24 16:22:31.000000000 
+0200
@@ -917,7 +917,7 @@
 a quick example of converting code that uses ``__file__`` to use
 ``pkg_resources`` instead.
 
-.. _Resource Management API: 
http://peak.telecommunity.com/DevCenter/PythonEggs#resource-management
+.. _Resource Management API: 
http://peak.telecommunity.com/DevCenter/PkgResources#resourcemanager-api
 .. _Accessing Package Resources: 
http://peak.telecommunity.com/DevCenter/PythonEggs#accessing-package-resources
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/msvc-build-launcher.cmd 
new/setuptools-23.1.0/msvc-build-launcher.cmd
--- old/setuptools-21.2.1/msvc-build-launcher.cmd       2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/msvc-build-launcher.cmd       2016-06-24 
16:22:31.000000000 +0200
@@ -35,21 +35,5 @@
   echo Windows SDK 6.1 not found to build Windows 64-bit version
 )
 
-REM Windows RT ARM build requires both freeware
-REM "Visual Studio Express 2012 for Windows 8" and
-REM "Visual Studio Express 2012 for Windows Desktop" to be installed from
-REM 
http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products
-set PATH=%PATH_OLD%
-set PATH=C:\Program Files\Microsoft Visual Studio 11.0\VC;%PATH%
-set PATH=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC;%PATH%
-call VCVARSALL x86_arm >nul 2>&1
-if "%ERRORLEVEL%"=="0" (
-  echo Building Windows RT Version ...
-  cl /D "GUI=0" /D "WIN32_LEAN_AND_MEAN" /D 
_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE launcher.c /O2 /link /MACHINE:ARM 
/SUBSYSTEM:CONSOLE /out:setuptools/cli-arm-32.exe
-  cl /D "GUI=1" /D "WIN32_LEAN_AND_MEAN" /D 
_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE launcher.c /O2 /link /MACHINE:ARM 
/SUBSYSTEM:WINDOWS /out:setuptools/gui-arm-32.exe
-) else (
-  echo Visual Studio ^(Express^) 2012 not found to build Windows RT Version
-)
-
 set PATH=%PATH_OLD%
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setup.cfg 
new/setuptools-23.1.0/setup.cfg
--- old/setuptools-21.2.1/setup.cfg     2016-05-22 22:14:31.000000000 +0200
+++ new/setuptools-23.1.0/setup.cfg     2016-06-24 16:22:50.000000000 +0200
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 21.2.1
+current_version = 23.1.0
 commit = True
 tag = True
 
@@ -10,18 +10,13 @@
 
 [aliases]
 clean_egg_info = egg_info -RDb ''
-release = clean_egg_info sdist bdist_wheel build_sphinx
+release = clean_egg_info sdist bdist_wheel
 source = register sdist binary
 binary = bdist_egg upload --show-response
 test = pytest
 
-[build_sphinx]
-source-dir = docs/
-build-dir = docs/build
-all_files = 1
-
-[upload_docs]
-upload-dir = docs/build/html
+[upload]
+repository = https://upload.pypi.io/legacy/
 
 [sdist]
 formats = gztar zip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setup.py 
new/setuptools-23.1.0/setup.py
--- old/setuptools-21.2.1/setup.py      2016-05-22 22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setup.py      2016-06-24 16:22:31.000000000 +0200
@@ -61,14 +61,12 @@
 
 needs_pytest = set(['ptr', 'pytest', 'test']).intersection(sys.argv)
 pytest_runner = ['pytest-runner'] if needs_pytest else []
-needs_sphinx = set(['build_sphinx', 'upload_docs', 
'release']).intersection(sys.argv)
-sphinx = ['sphinx', 'rst.linker>=1.5'] if needs_sphinx else []
 needs_wheel = set(['release', 'bdist_wheel']).intersection(sys.argv)
 wheel = ['wheel'] if needs_wheel else []
 
 setup_params = dict(
     name="setuptools",
-    version="21.2.1",
+    version="23.1.0",
     description="Easily download, build, install, upgrade, and uninstall "
                 "Python packages",
     author="Python Packaging Authority",
@@ -158,7 +156,7 @@
         'pytest>=2.8',
     ] + (['mock'] if sys.version_info[:2] < (3, 3) else []),
     setup_requires=[
-    ] + sphinx + pytest_runner + wheel,
+    ] + pytest_runner + wheel,
 )
 
 if __name__ == '__main__':
Files old/setuptools-21.2.1/setuptools/cli-arm-32.exe and 
new/setuptools-23.1.0/setuptools/cli-arm-32.exe differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools/command/build_py.py 
new/setuptools-23.1.0/setuptools/command/build_py.py
--- old/setuptools-21.2.1/setuptools/command/build_py.py        2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/command/build_py.py        2016-06-24 
16:22:31.000000000 +0200
@@ -8,6 +8,7 @@
 import distutils.errors
 import itertools
 
+from setuptools.extern import six
 from setuptools.extern.six.moves import map, filter, filterfalse
 
 try:
@@ -66,6 +67,9 @@
         return orig.build_py.__getattr__(self, attr)
 
     def build_module(self, module, module_file, package):
+        if six.PY2 and isinstance(package, six.string_types):
+            # avoid errors on Python 2 when unicode is passed (#190)
+            package = package.split('.')
         outfile, copied = orig.build_py.build_module(self, module, module_file,
                                                      package)
         if copied:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools/command/easy_install.py 
new/setuptools-23.1.0/setuptools/command/easy_install.py
--- old/setuptools-21.2.1/setuptools/command/easy_install.py    2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/command/easy_install.py    2016-06-24 
16:22:31.000000000 +0200
@@ -32,7 +32,6 @@
 import re
 import stat
 import random
-import platform
 import textwrap
 import warnings
 import site
@@ -2203,8 +2202,6 @@
     Returns the executable as a byte string.
     """
     launcher_fn = '%s.exe' % type
-    if platform.machine().lower() == 'arm':
-        launcher_fn = launcher_fn.replace(".", "-arm.")
     if is_64bit():
         launcher_fn = launcher_fn.replace(".", "-64.")
     else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools/command/egg_info.py 
new/setuptools-23.1.0/setuptools/command/egg_info.py
--- old/setuptools-21.2.1/setuptools/command/egg_info.py        2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/command/egg_info.py        2016-06-24 
16:22:31.000000000 +0200
@@ -52,8 +52,10 @@
     ]
 
     boolean_options = ['tag-date', 'tag-svn-revision']
-    negative_opt = {'no-svn-revision': 'tag-svn-revision',
-                    'no-date': 'tag-date'}
+    negative_opt = {
+        'no-svn-revision': 'tag-svn-revision',
+        'no-date': 'tag-date',
+    }
 
     def initialize_options(self):
         self.egg_name = None
@@ -197,6 +199,10 @@
         if self.tag_build:
             version += self.tag_build
         if self.tag_svn_revision:
+            warnings.warn(
+                "tag_svn_revision is deprecated and will not be honored "
+                "in a future release"
+            )
             version += '-r%s' % self.get_svn_revision()
         if self.tag_date:
             version += time.strftime("-%Y%m%d")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools/command/test.py 
new/setuptools-23.1.0/setuptools/command/test.py
--- old/setuptools-21.2.1/setuptools/command/test.py    2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/command/test.py    2016-06-24 
16:22:31.000000000 +0200
@@ -1,6 +1,7 @@
+import sys
+import contextlib
 from distutils.errors import DistutilsOptionError
 from unittest import TestLoader
-import sys
 
 from setuptools.extern import six
 from setuptools.extern.six.moves import map
@@ -102,6 +103,14 @@
             yield self.test_suite
 
     def with_project_on_sys_path(self, func):
+        """
+        Backward compatibility for project_on_sys_path context.
+        """
+        with self.project_on_sys_path():
+            func()
+
+    @contextlib.contextmanager
+    def project_on_sys_path(self):
         with_2to3 = six.PY3 and getattr(self.distribution, 'use_2to3', False)
 
         if with_2to3:
@@ -137,7 +146,7 @@
             working_set.__init__()
             add_activation_listener(lambda dist: dist.activate())
             require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version))
-            func()
+            yield
         finally:
             sys.path[:] = old_path
             sys.modules.clear()
@@ -154,9 +163,11 @@
         cmd = ' '.join(self._argv)
         if self.dry_run:
             self.announce('skipping "%s" (dry run)' % cmd)
-        else:
-            self.announce('running "%s"' % cmd)
-            self.with_project_on_sys_path(self.run_tests)
+            return
+
+        self.announce('running "%s"' % cmd)
+        with self.project_on_sys_path():
+            self.run_tests()
 
     def run_tests(self):
         # Purge modules under test from sys.modules. The test loader will
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools/command/upload_docs.py 
new/setuptools-23.1.0/setuptools/command/upload_docs.py
--- old/setuptools-21.2.1/setuptools/command/upload_docs.py     2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/command/upload_docs.py     2016-06-24 
16:22:31.000000000 +0200
@@ -13,6 +13,8 @@
 import zipfile
 import tempfile
 import shutil
+import itertools
+import functools
 
 from setuptools.extern import six
 from setuptools.extern.six.moves import http_client, urllib
@@ -21,15 +23,9 @@
 from .upload import upload
 
 
-errors = 'surrogateescape' if six.PY3 else 'strict'
-
-
-# This is not just a replacement for byte literals
-# but works as a general purpose encoder
-def b(s, encoding='utf-8'):
-    if isinstance(s, six.text_type):
-        return s.encode(encoding, errors)
-    return s
+def _encode(s):
+    errors = 'surrogateescape' if six.PY3 else 'strict'
+    return s.encode('utf-8', errors)
 
 
 class upload_docs(upload):
@@ -101,10 +97,48 @@
         finally:
             shutil.rmtree(tmp_dir)
 
+    @staticmethod
+    def _build_part(item, sep_boundary):
+        key, values = item
+        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)
+
+    @classmethod
+    def _build_multipart(cls, data):
+        """
+        Build up the MIME payload for the POST data
+        """
+        boundary = b'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
+        sep_boundary = b'\n--' + boundary
+        end_boundary = sep_boundary + b'--'
+        end_items = end_boundary, b"\n",
+        builder = functools.partial(
+            cls._build_part,
+            sep_boundary=sep_boundary,
+        )
+        part_groups = map(builder, data.items())
+        parts = itertools.chain.from_iterable(part_groups)
+        body_items = itertools.chain(parts, end_items)
+        content_type = 'multipart/form-data; boundary=%s' % boundary
+        return b''.join(body_items), content_type
+
     def upload_file(self, filename):
-        f = open(filename, 'rb')
-        content = f.read()
-        f.close()
+        with open(filename, 'rb') as f:
+            content = f.read()
         meta = self.distribution.metadata
         data = {
             ':action': 'doc_upload',
@@ -112,37 +146,13 @@
             'content': (os.path.basename(filename), content),
         }
         # set up the authentication
-        credentials = b(self.username + ':' + self.password)
+        credentials = _encode(self.username + ':' + self.password)
         credentials = standard_b64encode(credentials)
         if six.PY3:
             credentials = credentials.decode('ascii')
         auth = "Basic " + credentials
 
-        # Build up the MIME payload for the POST data
-        boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
-        sep_boundary = b('\n--') + b(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 = b(value)
-                body.append(sep_boundary)
-                body.append(b(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)
+        body, ct = self._build_multipart(data)
 
         self.announce("Submitting documentation to %s" % (self.repository),
                       log.INFO)
@@ -164,7 +174,7 @@
         try:
             conn.connect()
             conn.putrequest("POST", url)
-            content_type = 'multipart/form-data; boundary=%s' % boundary
+            content_type = ct
             conn.putheader('Content-type', content_type)
             conn.putheader('Content-length', str(len(body)))
             conn.putheader('Authorization', auth)
Files old/setuptools-21.2.1/setuptools/gui-arm-32.exe and 
new/setuptools-23.1.0/setuptools/gui-arm-32.exe differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools/package_index.py 
new/setuptools-23.1.0/setuptools/package_index.py
--- old/setuptools-21.2.1/setuptools/package_index.py   2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/package_index.py   2016-06-24 
16:22:31.000000000 +0200
@@ -17,6 +17,7 @@
 from setuptools.extern import six
 from setuptools.extern.six.moves import urllib, http_client, configparser, map
 
+import setuptools
 from pkg_resources import (
     CHECKOUT_DIST, Distribution, BINARY_DIST, normalize_path, SOURCE_DIST,
     require, Environment, find_distributions, safe_name, safe_version,
@@ -46,6 +47,11 @@
 
 _SOCKET_TIMEOUT = 15
 
+
+_tmpl = "setuptools/{setuptools.__version__} Python-urllib/{py_major}"
+user_agent = _tmpl.format(py_major=sys.version[:3], **globals())
+
+
 def parse_bdist_wininst(name):
     """Return (base,pyversion) or (None,None) for possible .exe name"""
 
@@ -202,9 +208,6 @@
             if match:
                 yield urllib.parse.urljoin(url, htmldecode(match.group(1)))
 
-user_agent = "Python-urllib/%s setuptools/%s" % (
-    sys.version[:3], require('setuptools')[0].version
-)
 
 class ContentChecker(object):
     """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/setuptools-21.2.1/setuptools/tests/test_upload_docs.py 
new/setuptools-23.1.0/setuptools/tests/test_upload_docs.py
--- old/setuptools-21.2.1/setuptools/tests/test_upload_docs.py  2016-05-22 
22:12:04.000000000 +0200
+++ new/setuptools-23.1.0/setuptools/tests/test_upload_docs.py  2016-06-24 
16:22:31.000000000 +0200
@@ -57,3 +57,15 @@
 
             with contextlib.closing(zipfile.ZipFile(tmp_file)) as zip_file:
                 assert zip_file.namelist() == ['index.html']
+
+    def test_build_multipart(self):
+        data = dict(
+            a="foo",
+            b="bar",
+            file=('file.txt', b'content'),
+        )
+        body, content_type = upload_docs._build_multipart(data)
+        assert 'form-data' in content_type
+        assert isinstance(body, bytes)
+        assert b'foo' in body
+        assert b'content' in body
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools.egg-info/PKG-INFO 
new/setuptools-23.1.0/setuptools.egg-info/PKG-INFO
--- old/setuptools-21.2.1/setuptools.egg-info/PKG-INFO  2016-05-22 
22:14:31.000000000 +0200
+++ new/setuptools-23.1.0/setuptools.egg-info/PKG-INFO  2016-06-24 
16:22:50.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: setuptools
-Version: 21.2.1
+Version: 23.1.0
 Summary: Easily download, build, install, upgrade, and uninstall Python 
packages
 Home-page: https://github.com/pypa/setuptools
 Author: Python Packaging Authority
@@ -13,7 +13,8 @@
         .. contents:: **Table of Contents**
         
         
-        `Change History <https://pythonhosted.org/setuptools/history.html>`_.
+        .. image:: https://setuptools.readthedocs.io/en/latest/?badge=latest
+            :target: https://setuptools.readthedocs.io
         
         -------------------------
         Installation Instructions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/setuptools-21.2.1/setuptools.egg-info/SOURCES.txt 
new/setuptools-23.1.0/setuptools.egg-info/SOURCES.txt
--- old/setuptools-21.2.1/setuptools.egg-info/SOURCES.txt       2016-05-22 
22:14:31.000000000 +0200
+++ new/setuptools-23.1.0/setuptools.egg-info/SOURCES.txt       2016-06-24 
16:22:50.000000000 +0200
@@ -21,6 +21,7 @@
 docs/pkg_resources.txt
 docs/python3.txt
 docs/releases.txt
+docs/requirements.txt
 docs/roadmap.txt
 docs/setuptools.txt
 docs/_templates/indexsidebar.html
@@ -51,14 +52,12 @@
 setuptools/archive_util.py
 setuptools/cli-32.exe
 setuptools/cli-64.exe
-setuptools/cli-arm-32.exe
 setuptools/cli.exe
 setuptools/depends.py
 setuptools/dist.py
 setuptools/extension.py
 setuptools/gui-32.exe
 setuptools/gui-64.exe
-setuptools/gui-arm-32.exe
 setuptools/gui.exe
 setuptools/launch.py
 setuptools/lib2to3_ex.py


Reply via email to