diff --git a/.gitignore b/.gitignore index dd4a515..7d840e8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /urllib3-1.7.1.tar.gz /urllib3-1.8.2.tar.gz /urllib3-1.9.1.tar.gz +/urllib3-1.10.tar.gz diff --git a/python-urllib3-unbundle.patch b/python-urllib3-unbundle.patch deleted file mode 100644 index feb36a2..0000000 --- a/python-urllib3-unbundle.patch +++ /dev/null @@ -1,288 +0,0 @@ -From 5851f52e1fef0869ef2c81eb7e3052d94d5c1bcd Mon Sep 17 00:00:00 2001 -From: Ralph Bean -Date: Wed, 5 Nov 2014 14:16:28 -0500 -Subject: [PATCH] unbundle - ---- - dummyserver/handlers.py | 2 +- - setup.py | 1 - - test/__init__.py | 2 +- - test/contrib/test_pyopenssl.py | 2 +- - test/test_collections.py | 2 +- - test/test_connectionpool.py | 7 ++++++- - test/test_fields.py | 2 +- - test/test_filepost.py | 2 +- - test/test_retry.py | 2 +- - test/with_dummyserver/test_connectionpool.py | 2 +- - urllib3/_collections.py | 5 +++-- - urllib3/connection.py | 8 ++++++-- - urllib3/connectionpool.py | 9 +++++++-- - urllib3/fields.py | 2 +- - urllib3/filepost.py | 4 ++-- - urllib3/response.py | 2 +- - urllib3/util/request.py | 2 +- - urllib3/util/retry.py | 2 +- - 18 files changed, 36 insertions(+), 22 deletions(-) - -diff --git a/dummyserver/handlers.py b/dummyserver/handlers.py -index 72faa1a..ea15a1e 100644 ---- a/dummyserver/handlers.py -+++ b/dummyserver/handlers.py -@@ -211,7 +211,7 @@ def _parse_header(line): - """ - import tornado.httputil - import email.utils -- from urllib3.packages import six -+ import six - if not six.PY3: - line = line.encode('utf-8') - parts = tornado.httputil._parseparam(';' + line) -diff --git a/setup.py b/setup.py -index f638377..5e6fff1 100644 ---- a/setup.py -+++ b/setup.py -@@ -42,7 +42,6 @@ setup(name='urllib3', - url='http://urllib3.readthedocs.org/', - license='MIT', - packages=['urllib3', -- 'urllib3.packages', 'urllib3.packages.ssl_match_hostname', - 'urllib3.contrib', 'urllib3.util', - ], - requires=[], -diff --git a/test/__init__.py b/test/__init__.py -index d56a4d3..85db6c4 100644 ---- a/test/__init__.py -+++ b/test/__init__.py -@@ -7,7 +7,7 @@ import socket - from nose.plugins.skip import SkipTest - - from urllib3.exceptions import MaxRetryError, HTTPWarning --from urllib3.packages import six -+import six - - # We need a host that will not immediately close the connection with a TCP - # Reset. SO suggests this hostname -diff --git a/test/contrib/test_pyopenssl.py b/test/contrib/test_pyopenssl.py -index 5d57527..f23ff19 100644 ---- a/test/contrib/test_pyopenssl.py -+++ b/test/contrib/test_pyopenssl.py -@@ -1,5 +1,5 @@ - from nose.plugins.skip import SkipTest --from urllib3.packages import six -+import six - - if six.PY3: - raise SkipTest('Testing of PyOpenSSL disabled on PY3') -diff --git a/test/test_collections.py b/test/test_collections.py -index 4d173ac..c5420f7 100644 ---- a/test/test_collections.py -+++ b/test/test_collections.py -@@ -4,7 +4,7 @@ from urllib3._collections import ( - HTTPHeaderDict, - RecentlyUsedContainer as Container - ) --from urllib3.packages import six -+import six - xrange = six.moves.xrange - - -diff --git a/test/test_connectionpool.py b/test/test_connectionpool.py -index 28fb89b..e8d4da3 100644 ---- a/test/test_connectionpool.py -+++ b/test/test_connectionpool.py -@@ -6,7 +6,12 @@ from urllib3.connectionpool import ( - HTTPConnectionPool, - ) - from urllib3.util.timeout import Timeout --from urllib3.packages.ssl_match_hostname import CertificateError -+ -+try: -+ from ssl import CertificateError # py3 -+except ImportError: -+ from backports.ssl_match_hostname import CertificateError # py2 -+ - from urllib3.exceptions import ( - ClosedPoolError, - EmptyPoolError, -diff --git a/test/test_fields.py b/test/test_fields.py -index cdec68b..66da148 100644 ---- a/test/test_fields.py -+++ b/test/test_fields.py -@@ -1,7 +1,7 @@ - import unittest - - from urllib3.fields import guess_content_type, RequestField --from urllib3.packages.six import u -+from six import u - - - class TestRequestField(unittest.TestCase): -diff --git a/test/test_filepost.py b/test/test_filepost.py -index 390dbb3..ecc6710 100644 ---- a/test/test_filepost.py -+++ b/test/test_filepost.py -@@ -2,7 +2,7 @@ import unittest - - from urllib3.filepost import encode_multipart_formdata, iter_fields - from urllib3.fields import RequestField --from urllib3.packages.six import b, u -+from six import b, u - - - BOUNDARY = '!! test boundary !!' -diff --git a/test/test_retry.py b/test/test_retry.py -index 7a3aa40..f11cbe7 100644 ---- a/test/test_retry.py -+++ b/test/test_retry.py -@@ -1,6 +1,6 @@ - import unittest - --from urllib3.packages.six.moves import xrange -+from six.moves import xrange - from urllib3.util.retry import Retry - from urllib3.exceptions import ( - ConnectTimeoutError, -diff --git a/test/with_dummyserver/test_connectionpool.py b/test/with_dummyserver/test_connectionpool.py -index 7d54fbf..54416e4 100644 ---- a/test/with_dummyserver/test_connectionpool.py -+++ b/test/with_dummyserver/test_connectionpool.py -@@ -30,7 +30,7 @@ from urllib3.exceptions import ( - ReadTimeoutError, - ProtocolError, - ) --from urllib3.packages.six import b, u -+from six import b, u - from urllib3.util.retry import Retry - from urllib3.util.timeout import Timeout - -diff --git a/urllib3/_collections.py b/urllib3/_collections.py -index d77ebb8..139b8f4 100644 ---- a/urllib3/_collections.py -+++ b/urllib3/_collections.py -@@ -13,8 +13,9 @@ except ImportError: # Platform-specific: No threads available - try: # Python 2.7+ - from collections import OrderedDict - except ImportError: -- from .packages.ordered_dict import OrderedDict --from .packages.six import itervalues -+ from ordereddict import OrderedDict -+ -+from six import itervalues - - - __all__ = ['RecentlyUsedContainer', 'HTTPHeaderDict'] -diff --git a/urllib3/connection.py b/urllib3/connection.py -index cebdd86..fa97ab9 100644 ---- a/urllib3/connection.py -+++ b/urllib3/connection.py -@@ -3,7 +3,7 @@ import sys - import socket - from socket import timeout as SocketTimeout - import warnings --from .packages import six -+import six - - try: # Python 3 - from http.client import HTTPConnection as _HTTPConnection, HTTPException -@@ -39,7 +39,11 @@ from .exceptions import ( - ConnectTimeoutError, - SystemTimeWarning, - ) --from .packages.ssl_match_hostname import match_hostname -+ -+try: -+ from ssl import match_hostname # py3 -+except ImportError: -+ from backports.ssl_match_hostname import match_hostname # py2 - - from .util.ssl_ import ( - resolve_cert_reqs, -diff --git a/urllib3/connectionpool.py b/urllib3/connectionpool.py -index ac6e0ca..f840175 100644 ---- a/urllib3/connectionpool.py -+++ b/urllib3/connectionpool.py -@@ -26,8 +26,13 @@ from .exceptions import ( - TimeoutError, - InsecureRequestWarning, - ) --from .packages.ssl_match_hostname import CertificateError --from .packages import six -+ -+try: -+ from ssl import CertificateError # py3 -+except ImportError: -+ from backports.ssl_match_hostname import CertificateError # py2 -+ -+import six - from .connection import ( - port_by_scheme, - DummyConnection, -diff --git a/urllib3/fields.py b/urllib3/fields.py -index c853f8d..5fe3c24 100644 ---- a/urllib3/fields.py -+++ b/urllib3/fields.py -@@ -1,7 +1,7 @@ - import email.utils - import mimetypes - --from .packages import six -+import six - - - def guess_content_type(filename, default='application/octet-stream'): -diff --git a/urllib3/filepost.py b/urllib3/filepost.py -index 0fbf488..97ab970 100644 ---- a/urllib3/filepost.py -+++ b/urllib3/filepost.py -@@ -3,8 +3,8 @@ import codecs - from uuid import uuid4 - from io import BytesIO - --from .packages import six --from .packages.six import b -+import six -+from six import b - from .fields import RequestField - - writer = codecs.lookup('utf-8')[3] -diff --git a/urllib3/response.py b/urllib3/response.py -index e69de95..f432ddd 100644 ---- a/urllib3/response.py -+++ b/urllib3/response.py -@@ -4,7 +4,7 @@ from socket import timeout as SocketTimeout - - from ._collections import HTTPHeaderDict - from .exceptions import ProtocolError, DecodeError, ReadTimeoutError --from .packages.six import string_types as basestring, binary_type -+from six import string_types as basestring, binary_type - from .connection import HTTPException, BaseSSLError - from .util.response import is_fp_closed - -diff --git a/urllib3/util/request.py b/urllib3/util/request.py -index bc64f6b..5f4ccfd 100644 ---- a/urllib3/util/request.py -+++ b/urllib3/util/request.py -@@ -1,6 +1,6 @@ - from base64 import b64encode - --from ..packages.six import b -+from six import b - - ACCEPT_ENCODING = 'gzip,deflate' - -diff --git a/urllib3/util/retry.py b/urllib3/util/retry.py -index eb560df..2723ded 100644 ---- a/urllib3/util/retry.py -+++ b/urllib3/util/retry.py -@@ -7,7 +7,7 @@ from ..exceptions import ( - ReadTimeoutError, - MaxRetryError, - ) --from ..packages import six -+import six - - - log = logging.getLogger(__name__) --- -1.9.3 - diff --git a/python-urllib3.spec b/python-urllib3.spec index 0cf3593..0502d58 100644 --- a/python-urllib3.spec +++ b/python-urllib3.spec @@ -7,7 +7,7 @@ %global srcname urllib3 Name: python-%{srcname} -Version: 1.9.1 +Version: 1.10 Release: 1%{?dist} Summary: Python HTTP library with thread-safe connection pooling and file post @@ -15,19 +15,17 @@ License: MIT URL: http://urllib3.readthedocs.org/ Source0: http://pypi.python.org/packages/source/u/%{srcname}/%{srcname}-%{version}.tar.gz -### TODO: Send this to upstream urllib3 -# make all imports of things in packages try system copies first -Patch0: python-urllib3-unbundle.patch - # Remove logging-clear-handlers from setup.cfg because it's not available in RHEL6's nose Patch100: python-urllib3-old-nose-compat.patch BuildArch: noarch Requires: ca-certificates -Requires: python-six +# Previously bundled things: +Requires: python-six Requires: python-backports-ssl_match_hostname + %if 0%{?rhel} && 0%{?rhel} <= 6 BuildRequires: python-ordereddict Requires: python-ordereddict @@ -38,8 +36,8 @@ BuildRequires: python2-devel BuildRequires: python-nose BuildRequires: python-mock BuildRequires: python-six -BuildRequires: python-tornado BuildRequires: python-backports-ssl_match_hostname +BuildRequires: python-tornado %if 0%{?with_python3} BuildRequires: python3-devel @@ -67,9 +65,6 @@ Python3 HTTP module with connection pooling and file POST abilities. %prep %setup -q -n %{srcname}-%{version} -rm -rf urllib3/packages/ - -%patch0 -p1 %if 0%{?rhel} && 0%{?rhel} <= 6 %patch100 -p1 %endif @@ -80,7 +75,7 @@ cp -a . %{py3dir} %endif # with_python3 %build -%{__python} setup.py build +%{__python2} setup.py build %if 0%{?with_python3} pushd %{py3dir} @@ -90,15 +85,38 @@ popd %install rm -rf %{buildroot} -%{__python} setup.py install --skip-build --root %{buildroot} +%{__python2} setup.py install --skip-build --root %{buildroot} + +rm -rf %{buildroot}/%{python2_sitelib}/urllib3/packages/six.py* +rm -rf %{buildroot}/%{python2_sitelib}/urllib3/packages/ssl_match_hostname/ + +mkdir -p %{buildroot}/%{python2_sitelib}/urllib3/packages/ +ln -s ../../six.py %{buildroot}/%{python2_sitelib}/urllib3/packages/six.py +ln -s ../../backports/ssl_match_hostname %{buildroot}/%{python2_sitelib}/urllib3/packages/ssl_match_hostname + +# Copy in six.py just for the test suite. +cp %{python2_sitelib}/six.* %{buildroot}/%{python2_sitelib}/. +cp -r %{python2_sitelib}/backports %{buildroot}/%{python2_sitelib}/. +ls -alh %{buildroot}/%{python2_sitelib}/urllib3/packages/ +ls -alh %{buildroot}/%{python2_sitelib} # dummyserver is part of the unittest framework -rm -rf %{buildroot}%{python_sitelib}/dummyserver +rm -rf %{buildroot}%{python2_sitelib}/dummyserver %if 0%{?with_python3} pushd %{py3dir} %{__python3} setup.py install --skip-build --root %{buildroot} +rm -rf %{buildroot}/%{python3_sitelib}/urllib3/packages/six.py* +rm -rf %{buildroot}/%{python3_sitelib}/urllib3/packages/ssl_match_hostname/ + +mkdir -p %{buildroot}/%{python3_sitelib}/urllib3/packages/ +ln -s ../../six.py %{buildroot}/%{python3_sitelib}/urllib3/packages/six.py + +# Copy in six.py just for the test suite. +cp %{python3_sitelib}/six.* %{buildroot}/%{python3_sitelib}/. +ls -alh %{buildroot}/%{python3_sitelib} + # dummyserver is part of the unittest framework rm -rf %{buildroot}%{python3_sitelib}/dummyserver popd @@ -107,10 +125,18 @@ popd %check nosetests +# And after its done, remove our copied in bits +rm -rf %{buildroot}/%{python2_sitelib}/six* +rm -rf %{buildroot}/%{python2_sitelib}/backports* + %if 0%{?with_python3} pushd %{py3dir} nosetests-%{python3_version} popd + +# And after its done, remove our copied in bits +rm -rf %{buildroot}/%{python3_sitelib}/six* +rm -rf %{buildroot}/%{python3_sitelib}/__pycache__* %endif # with_python3 %files @@ -118,17 +144,24 @@ popd %license LICENSE.txt %doc CHANGES.rst README.rst CONTRIBUTORS.txt # For noarch packages: sitelib -%{python_sitelib}/* +%{python2_sitelib}/urllib3/ +%{python2_sitelib}/urllib3-*.egg-info %if 0%{?with_python3} %files -n python3-%{srcname} %{!?_licensedir:%global license %%doc} %license LICENSE.txt # For noarch packages: sitelib -%{python3_sitelib}/* +%{python3_sitelib}/urllib3/ +%{python3_sitelib}/urllib3-*.egg-info %endif # with_python3 %changelog +* Sun Dec 14 2014 Ralph Bean - 1.10-1 +- Latest upstream 1.10, for python-requests-2.5.0. +- Re-do unbundling without patch, with symlinks. +- Modernize python2 macros. + * Wed Nov 05 2014 Ralph Bean - 1.9.1-1 - Latest upstream, 1.9.1 for latest python-requests. @@ -185,4 +218,3 @@ popd * Mon Feb 04 2013 Toshio Kuratomi 1.5-1 - Initial fedora build. - diff --git a/sources b/sources index 7d4d677..6bc0b60 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c9358c5a85dd6aa3942f5121efed064d urllib3-1.9.1.tar.gz +9badc8f09ea2d3c36cbb5071bfe52ebd urllib3-1.10.tar.gz