# # spec file for package python-urllib3 # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define oldpython python %global flavor %{nil} %if "%{flavor}" == "test" %define psuffix -test %bcond_without test %else %define psuffix %{nil} %bcond_with test %endif %bcond_without python2 Name: python-urllib3%{psuffix} Version: 1.25.8 Release: 1.3 Summary: HTTP library with thread-safe connection pooling, file post, and more License: MIT Group: Development/Languages/Python URL: https://urllib3.readthedocs.org/ Source: https://files.pythonhosted.org/packages/source/u/urllib3/urllib3-%{version}.tar.gz # Wrapper for ssl to unbundle ssl_match_hostname Source1: ssl_match_hostname_py3.py BuildRequires: %{python_module setuptools} BuildRequires: %{python_module six} BuildRequires: fdupes BuildRequires: python-rpm-macros #!BuildIgnore: python-requests Requires: ca-certificates-mozilla Requires: python-certifi Requires: python-cryptography >= 1.3.4 Requires: python-idna >= 2.0.0 Requires: python-pyOpenSSL Requires: python-six >= 1.12.0 BuildArch: noarch # for SSL module on older distros %if 0%{?suse_version} < 1500 BuildRequires: %{oldpython} %endif %if %{with python2} BuildRequires: python-backports.ssl_match_hostname BuildRequires: python-ipaddress %endif %ifpython2 Requires: python-backports.ssl_match_hostname %endif %if %{with test} BuildRequires: %{python_module PySocks} BuildRequires: %{python_module brotlipy >= 0.6.0} BuildRequires: %{python_module certifi} BuildRequires: %{python_module cryptography >= 1.3.4} BuildRequires: %{python_module idna >= 2.0.0} BuildRequires: %{python_module mock >= 1.3.0} BuildRequires: %{python_module psutil} BuildRequires: %{python_module pytest} BuildRequires: %{python_module six >= 1.12.0} BuildRequires: %{python_module tornado < 6} BuildRequires: %{python_module trustme >= 0.5.3} BuildRequires: %{python_module urllib3 >= %{version}} %endif %if 0%{?suse_version} >= 1000 || 0%{?fedora_version} >= 24 Recommends: python-PySocks >= 1.5.6 Recommends: python-brotlipy >= 0.6.0 %endif %ifpython2 Requires: python-ipaddress Obsoletes: python-urllib3 <= %{version} Provides: python-urllib3 = %{version} %endif %python_subpackages %description Highlights - Re-use the same socket connection for multiple requests (HTTPConnectionPool and HTTPSConnectionPool) (with optional client-side certificate verification). - File posting (encode_multipart_formdata). - Built-in redirection and retries (optional). - Supports gzip and deflate decoding. - Thread-safe and sanity-safe. - Works with AppEngine, gevent, and eventlib. - Tested on Python 2.6+ and Python 3.3+, 100% unit test coverage. - Small and easy to understand codebase perfect for extending and building upon. For a more comprehensive solution, have a look at Requests which is also powered by urllib3. %prep %setup -q -n urllib3-%{version} find . -type f -exec chmod a-x '{}' \; find . -name __pycache__ -type d -exec rm -fr {} + # Drop the dummyserver tests, they fail in OBS rm test/with_dummyserver/test_proxy_poolmanager.py rm test/with_dummyserver/test_poolmanager.py # Don't run the Google App Engine tests rm -r test/appengine/ %build %python_build %install %if !%{with test} %python_install %{python_expand \ $python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/urllib3/ $python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/urllib3/ } %if 0%{?have_python2} && ! 0%{?skip_python2} # Unbundle the Python 2 build 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 %{python2_sitelib}/six.py %{buildroot}/%{python2_sitelib}/urllib3/packages/six.py ln -s %{python2_sitelib}/six.pyc %{buildroot}/%{python2_sitelib}/urllib3/packages/six.pyc ln -s %{python2_sitelib}/six.pyo %{buildroot}/%{python2_sitelib}/urllib3/packages/six.pyo ln -s %{python2_sitelib}/backports/ssl_match_hostname \ %{buildroot}/%{python2_sitelib}/urllib3/packages/ssl_match_hostname %endif %if 0%{?have_python3} && ! 0%{?skip_python3} # Unbundle the Python 3 build rm -rf %{buildroot}/%{python3_sitelib}/urllib3/packages/six.py* rm -rf %{buildroot}/%{python3_sitelib}/urllib3/packages/__pycache__/six* rm -rf %{buildroot}/%{python3_sitelib}/urllib3/packages/ssl_match_hostname/ mkdir -p %{buildroot}/%{python3_sitelib}/urllib3/packages/ cp -a %{SOURCE1} %{buildroot}/%{python3_sitelib}/urllib3/packages/ssl_match_hostname.py ln -s %{python3_sitelib}/six.py %{buildroot}/%{python3_sitelib}/urllib3/packages/six.py ln -s %{python3_sitelib}/__pycache__/six.cpython-%{python3_version_nodots}.opt-1.pyc \ %{buildroot}/%{python3_sitelib}/urllib3/packages/__pycache__/ ln -s %{python3_sitelib}/__pycache__/six.cpython-%{python3_version_nodots}.pyc \ %{buildroot}/%{python3_sitelib}/urllib3/packages/__pycache__/ %endif %python_expand %fdupes %{buildroot}%{$python_sitelib} %endif %if ! %{with test} && "%{python_flavor}" == "python2" %pre -n python2-urllib3 SITELIB=%{python2_sitelib} CONFLICTED="${SITELIB}/urllib3/packages/ssl_match_hostname" if [ -d "$CONFLICTED" -a ! -L "$CONFLICTED" ] ; then # Change from directory to symlink rm -rfv "$CONFLICTED" ln -s ../../backports/ssl_match_hostname \ $CONFLICTED fi %endif %if %{with test} %check skiplist='not test_select_interrupt_exception and not test_selector_error and not timeout and not test_request_host_header_ignores_fqdn_dot and not test_dotted_fqdn and not TestImportWithoutSSL' case $(uname -m) in ppc*) skiplist="$skiplist and not test_select_timing and not test_select_multiple_interrupts_with_event and not test_interrupt_wait_for_read_with_event and not test_select_interrupt_with_event";; esac # the certificate validation is much stricter in new openssl so skip # tests which would not validate it skiplist="$skiplist and not test_client_no_intermediate" export PYTHONDONTWRITEBYTECODE=1 export LANG="en_US.UTF8" %pytest -k "${skiplist}" %endif %if ! %{with test} %files %{python_files} %license LICENSE.txt %doc CHANGES.rst CONTRIBUTORS.txt README.rst %{python_sitelib}/urllib3 %{python_sitelib}/urllib3-%{version}-py*.egg-info %endif %changelog * Fri Feb 7 2020 Marketa Calabkova - update to 1.25.8 * Drop support for EOL Python 3.4 * Optimize _encode_invalid_chars * Preserve chunked parameter on retries * Allow unset SERVER_SOFTWARE in App Engine * Fix issue where URL fragment was sent within the request target. * Fix issue where an empty query section in a URL would fail to parse. * Remove TLS 1.3 support in SecureTransport due to Apple removing support. * Tue Oct 15 2019 Ralf Haferkamp - Require a new enough release of python-six. 1.25.6 needs at least 1.12.0 for ensure_text() and friends. * Wed Oct 2 2019 Tomáš Chvátal - Updae to 1.25.6: * Fix issue where tilde (~) characters were incorrectly percent-encoded in the path. (Pull #1692) * Fri Sep 27 2019 Tomáš Chvátal - Restrict the tornado dep from tom to 5 or older release as the 6.x changed the API * Fri Sep 20 2019 Tomáš Chvátal - Update to 1.25.5: * Add mitigation for BPO-37428 affecting Python <3.7.4 and OpenSSL 1.1.1+ which caused certificate verification to be enabled when using cert_reqs=CERT_NONE. (Issue #1682) * Propagate Retry-After header settings to subsequent retries. (Pull #1607) * Fix edge case where Retry-After header was still respected even when explicitly opted out of. (Pull #1607) * Remove dependency on rfc3986 for URL parsing. * Fix issue where URLs containing invalid characters within Url.auth would raise an exception instead of percent-encoding those characters. * Add support for HTTPResponse.auto_close = False which makes HTTP responses work well with BufferedReaders and other io module features. (Pull #1652) * Percent-encode invalid characters in URL for HTTPConnectionPool.request() (Pull #1673) - Drop patch urllib3-ssl-default-context.patch - Drop patch python-urllib3-recent-date.patch the date is recent enough on its own * Sat Sep 14 2019 John Vandenberg - Use have/skip_python2/3 macros to allow building only one flavour * Mon Jul 22 2019 Tomáš Chvátal - Use old pytest 3.x as newer do not work with this release * this will be fixed with next release, just spread among numerous fixes in the git for quick backporting * Fri Jun 21 2019 Dominique Leuenberger - Fixup pre script: the migration issue happens when changing from python-urllib3 to python2-urllib3: the number of installed instances of python2-urlliib3 is at this moment 1, unlike in regular updates. This is due to a name change, which consists not of a pure package update. * Thu Jun 20 2019 Dominique Leuenberger - Provides/Obsoletes does not fix the issue: we have a directory-to-symlink switch, which cannot be handled by RPM internally. Assist using pre script (boo#1138715). * Wed Jun 19 2019 Stefan Brüns - Fix Upgrade from Leap 42.1/42.2 by adding Obsoletes/Provides: python-urllib3, fixes boo#1138746 * Fri Jun 7 2019 Tomáš Chvátal - Skip test_source_address_error as we raise different error with fixes that we provide in new python2/3 * Wed May 29 2019 Tomáš Chvátal - Add more test to skip as with new openssl some behaviour changed and we can't rely on them anymore * Wed May 29 2019 Tomáš Chvátal - Unbundle the six, rfc3986, and backports.ssl_match_hostname * Fri May 24 2019 Tomáš Chvátal - Update to 1.25.3: * Change HTTPSConnection to load system CA certificates when ca_certs, ca_cert_dir, and ssl_context are unspecified. (Pull #1608, Issue #1603) * Upgrade bundled rfc3986 to v1.3.2. (Pull #1609, Issue #1605) * Mon May 6 2019 Tomáš Chvátal - Update to 1.25.2: * Change is_ipaddress to not detect IPvFuture addresses. (Pull #1583) * Change parse_url to percent-encode invalid characters within the path, query, and target components. (Pull #1586) * Add support for Google's Brotli package. (Pull #1572, Pull #1579) * Upgrade bundled rfc3986 to v1.3.1 (Pull #1578) - Require all the deps from the secure list rather than Recommend. This makes the check to be run always and ensure the urls are "secure". - Remove ndg-httpsclient as it is not needed since 2015 * Tue Apr 23 2019 Tomáš Chvátal - Add missing dependency on brotlipy - Fix the tests to pass again * Tue Apr 23 2019 Thomas Bechtold - update to 1.25 (bsc#1132663, CVE-2019-9740, CVE-2019-11236): * Require and validate certificates by default when using HTTPS * Upgraded ``urllib3.utils.parse_url()`` to be RFC 3986 compliant. * Added support for ``key_password`` for ``HTTPSConnectionPool`` to use encrypted ``key_file`` without creating your own ``SSLContext`` object. * Add TLSv1.3 support to CPython, pyOpenSSL, and SecureTransport ``SSLContext`` implementations. (Pull #1496) * Switched the default multipart header encoder from RFC 2231 to HTML 5 working draft. * Fixed issue where OpenSSL would block if an encrypted client private key was given and no password was given. Instead an ``SSLError`` is raised. * Added support for Brotli content encoding. It is enabled automatically if ``brotlipy`` package is installed which can be requested with ``urllib3[brotli]`` extra. * Drop ciphers using DSS key exchange from default TLS cipher suites. Improve default ciphers when using SecureTransport. * Implemented a more efficient ``HTTPResponse.__iter__()`` method. - Drop urllib3-test-ssl-drop-sslv3.patch . No longer needed * Wed Apr 17 2019 Matej Cepl - Update to 1.24.2 (bsc#1132900, CVE-2019-11324): - Implemented a more efficient HTTPResponse.__iter__() method. (Issue #1483) - Upgraded urllib3.utils.parse_url() to be RFC 3986 compliant. (Pull #1487) - Remove Authorization header regardless of case when redirecting to cross-site. (Issue #1510) - Added support for key_password for HTTPSConnectionPool to use encrypted key_file without creating your own SSLContext object. (Pull #1489) - Fixed issue where OpenSSL would block if an encrypted client private key was given and no password was given. Instead an SSLError is raised. (Pull #1489) - Require and validate certificates by default when using HTTPS (Pull #1507) - Added support for Brotli content encoding. It is enabled automatically if brotlipy package is installed which can be requested with urllib3[brotli] extra. (Pull #1532) - Add TLSv1.3 support to CPython, pyOpenSSL, and SecureTransport SSLContext implementations. (Pull #1496) - Drop ciphers using DSS key exchange from default TLS cipher suites. Improve default ciphers when using SecureTransport. (Pull #1496) - Add support for IPv6 addresses in subjectAltName section of certificates. (Issue #1269) - Switched the default multipart header encoder from RFC 2231 to HTML 5 working draft. (Issue #303, PR #1492) * Sun Dec 30 2018 mcepl@suse.com - Update to 1.24.1: * Remove quadratic behavior within GzipDecoder.decompress() (Issue #1467) * Restored functionality of ciphers parameter for create_urllib3_context(). (Issue #1462) * Thu Nov 1 2018 Tomáš Chvátal - Update to 1.24: * Allow key_server_hostname to be specified when initializing a PoolManager to allow custom SNI to be overridden. (Pull #1449) * Test against Python 3.7 on AppVeyor. (Pull #1453) * Early-out ipv6 checks when running on App Engine. (Pull #1450) * Change ambiguous description of backoff_factor (Pull #1436) * Add ability to handle multiple Content-Encodings (Issue #1441 and Pull #1442) * Skip DNS names that can't be idna-decoded when using pyOpenSSL (Issue #1405). * Add a server_hostname parameter to HTTPSConnection which allows for overriding the SNI hostname sent in the handshake. (Pull #1397) * Drop support for EOL Python 2.6 (Pull #1429 and Pull #1430) * Fixed bug where responses with header Content-Type: message/* erroneously raised HeaderParsingError, resulting in a warning being logged. (Pull #1439) * Move urllib3 to src/urllib3 (Pull #1409) - Drop patch 1414.patch merged upstream - Refresh patches: * python-urllib3-recent-date.patch * urllib3-ssl-default-context.patch * Fri Sep 7 2018 mcepl@suse.com - Switch to multibuild to minize requirements for providing urllib3 module. * Tue Aug 21 2018 dmueller@suse.com - fix dependency again for passing tests for python 2.x * Mon Aug 20 2018 tchvatal@suse.com - Do not use ifpython2 for BRs where it does not work * Mon Aug 20 2018 dmueller@suse.com - add python-ipaddress dependency for python 2.x * Wed Jul 18 2018 tchvatal@suse.com - Drop not needed devel and nose deps * Sun Jul 15 2018 mimi.vx@gmail.com - update to 1.23 (bsc#1119376, CVE-2018-20060) - add 1414.patch - fix tests with new tornado - refresh python-urllib3-recent-date.patch - drop urllib3-test-no-coverage.patch * Allow providing a list of headers to strip from requests when redirecting to a different host. Defaults to the Authorization header. Different headers can be set via Retry.remove_headers_on_redirect. * Fix util.selectors._fileobj_to_fd to accept long * Dropped Python 3.3 support. * Put the connection back in the pool when calling stream() or read_chunked() on a chunked HEAD response. * Fixed pyOpenSSL-specific ssl client authentication issue when clients attempted to auth via certificate + chain * Add the port to the connectionpool connect print * Don't use the uuid module to create multipart data boundaries. * read_chunked() on a closed response returns no chunks. * Add Python 2.6 support to contrib.securetransport * Added support for auth info in url for SOCKS proxy * Wed Mar 7 2018 aplanas@suse.com - Allows Recommends and Suggest in Fedora * Tue Feb 27 2018 aplanas@suse.com - Recommends only for SUSE * Mon Feb 12 2018 normand@linux.vnet.ibm.com - disable more flaky tests specifically for PowerPC * Sun Dec 31 2017 dimstar@opensuse.org - Add python-urllib3-recent-date.patch: Fix test suite, use correct date (gh#shazow/urllib3#1303, boo#1074247). * Thu Oct 19 2017 jmatejek@suse.com - use python3 for detection, in anticipation of python2 removal * Fri Aug 11 2017 toddrme2178@gmail.com - Disable tests that timeout * Tue Aug 8 2017 tbechtold@suse.com - update to 1.22: * Fixed missing brackets in ``HTTP CONNECT`` when connecting to IPv6 address via IPv6 proxy. (Issue #1222) * Made the connection pool retry on ``SSLError``. The original ``SSLError`` is available on ``MaxRetryError.reason``. (Issue #1112) * Drain and release connection before recursing on retry/redirect. Fixes deadlocks with a blocking connectionpool. (Issue #1167) * Fixed compatibility for cookiejar. (Issue #1229) * pyopenssl: Use vendored version of ``six``. (Issue #1231) - use pytest for running the tests. That is what upstream is doing * Sat Jun 10 2017 dmueller@suse.com - update to 1.21.1: * Fixed SecureTransport issue that would cause long delays in response body delivery. (Pull #1154) * Fixed regression in 1.21 that threw exceptions when users passed the ``socket_options`` flag to the ``PoolManager``. (Issue #1165) * Fixed regression in 1.21 that threw exceptions when users passed the ``assert_hostname`` or ``assert_fingerprint`` flag to the ``PoolManager``. * Improved performance of certain selector system calls on Python 3.5 and later. (Pull #1095) * Resolved issue where the PyOpenSSL backend would not wrap SysCallError exceptions appropriately when sending data. (Pull #1125) * Selectors now detects a monkey-patched select module after import for modules that patch the select module like eventlet, greenlet. (Pull #1128) * Reduced memory consumption when streaming zlib-compressed responses (as opposed to raw deflate streams). (Pull #1129) * Connection pools now use the entire request context when constructing the pool key. (Pull #1016) * ``PoolManager.connection_from_*`` methods now accept a new keyword argument, ``pool_kwargs``, which are merged with the existing ``connection_pool_kw``. * Add retry counter for ``status_forcelist``. (Issue #1147) * Added ``contrib`` module for using SecureTransport on macOS: ``urllib3.contrib.securetransport``. (Pull #1122) * urllib3 now only normalizes the case of ``http://`` and ``https://`` schemes: for schemes it does not recognise, it assumes they are case-sensitive and leaves them unchanged. * Wed May 17 2017 lchiquitto@suse.de - Relax python-nose version requirement on SLE 12 (fate#321630) * Tue Mar 14 2017 jmatejek@suse.com - merge python3 modifications - update for multipython build - update to 1.20: * Added support for waiting for I/O using selectors other than select, improving urllib3’s behaviour with large numbers of concurrent connections. (Pull #1001) * Updated the date for the system clock check. (Issue #1005) * ConnectionPools now correctly consider hostnames to be case-insensitive. (Issue #1032) * Outdated versions of PyOpenSSL now cause the PyOpenSSL contrib module to fail when it is injected, rather than at first use. (Pull #1063) * Outdated versions of cryptography now cause the PyOpenSSL contrib module to fail when it is injected, rather than at first use. (Issue #1044) * Automatically attempt to rewind a file-like body object when a request is retried or redirected. (Pull #1039) * Fix some bugs that occur when modules incautiously patch the queue module. (Pull #1061) * Prevent retries from occuring on read timeouts for which the request method was not in the method whitelist. (Issue #1059) * Changed the PyOpenSSL contrib module to lazily load idna to avoid unnecessarily bloating the memory of programs that don’t need it. (Pull #1076) * Add support for IPv6 literals with zone identifiers. (Pull #1013) * Added support for socks5h:// and socks4a:// schemes when working with SOCKS proxies, and controlled remote DNS appropriately. (Issue #1035) * Wed Dec 28 2016 tbechtold@suse.com update to version 1.19.1 * Forgot to mention #955. * Starting o the user guide. * Add ipaddress marker to setup.cfg. * CHANGES for #897 * Version added 1.17 * Change debug level to 'debug' to match ConnectionPool * Moving some stuff to advanced usage. * Ignore only the unused import error * Uniform checks. * Add test for past date in Retry-After header * Adding all reference docs * Ok, I just gotta see what's going on here. * Adding app engine docs * Keep using the good OpenSSL * Adding timeout section * Removing absolute import in NTLMPool * Use the good OpenSSL. * Small pass at contributing * parse_url: Disallow non-integer digits explicitly in port numbers * Fixup some whitespace. * Updating copy on landing page. * Fix flake8 E305 errors * Use OS default certs when possible * Fleshing out user guide. * Fallback to the vendored ipaddress module. * Updating intersphinx to python 3.4 * Seems like version mismatch is the issue. * Improve the cipher suite comment * Retry backoff time is calculated only from the last consecutive errors sequence * Fix a typo in the user guide documentation * Update docs guide with new dependencies * Tests for #979 * Remove HIGH cipher suites as well. * Adding SSL verification section to user guide. * More CHANGES * Changes for #1017 * Changelog for #1009. * Vendor a backport of the ipaddress module. * CHANGES for 1.19 * Fixed typos * Revert "Fallback to the vendored ipaddress module." * Use "with" to close more files eagerly and also on error * Addressing review comments * First stab at the new index page * Removing unneeded scratch file. * Fixing some references * Moving some stuff around. * CR fixes * Remove 100%% requirement from nosetests. * Try using codecov * Remove absolute import. * Split ciphers up to individual lines. * add warning when timeout without total is used on App Engine * We don't want a sad @haikuginger * RequestHistory is a namedtuple instance. * I wonder if we're missing this. * Switching to alabaster theme * Prefer user-supplied host headers. * Try shoving it in tox.ini * Add include=urllib3/* to prevent core module coverage through six.moves * Pointing flake8 specifically at the urllib3 package * CHANGES for #955 * Sorry PyPy. * Add support for ChaCha20. * Make Travis CI fail if docs have warnings or errors * Added CHANGES entry * Test with OpenSSL 1.1 on Mac. * Backport Python 3.5 match_hostname function. * Wrap lines to under 99 chars * Moving docs creation into tox * Gotta use the pyenv everywhere. * Explicitly check if a value in a multipart header is None instead of just a falsy value * Move to a more complex bit of idna handling. * Make codecov enforce 100%% coverage. * Error if GAE_PYTHONPATH is not set when running make test-gae * Changes for #258. * adding length_remaining functionality to HTTPResponse * test TLSv1 instead of SSLv3 * fixing infinite loop when stream(None) called * Adding proxy section * Don't forget setup.cfg * Removing TODO * add changelog for #978 * Stop testing our parsing via TLS failure. * CHANGES for #928 * Add support for OS X. * While I'm shotgun debugging. * Merging new release version: 1.19.1 * Clean up some bugs. * Support date in Retry-After header * Defer to URLFetch's default timeout instead of hard coding 5s. * Update Travis PyPy testing to 5.4 * Remove 3DES support. * Seems like Python 2.6 doesn't like -m pip * Adding logging and exceptions. * changing conditional order to prefer isclosed over closed * Have the 'secure' flag install ipaddress. * Respect Retry-After header for redirection * Respect Retry-After header * Correct the import of urljoin for Python 3 * use dunder slots for Url class slots variable * Update README.rst to better reflect new documentation. * Allow PyPy 5.3 to fail * updating CHANGES and CONTRIBUTORS * Clarifying a few things. * Revert "Remove ipaddress marker." * Fix GAE_PYTHONPATH error in Makefile * Removing symlinks from dummyserver certs to fix test suite on Windows * adding in exception for booleans and zero values in timeouts * CHANGES for #930 * add domain and method aware logging to connectionpool (#897) * Add release note about #941 (#943) * Make HTTPResponse.stream() work with file-like body of non-HTTPResponse type (eg StringIO) * Use HTTPException, LifoQueue, Empty, and Full from six * CHANGES for #858 and #887 * Updating links to SSL warning help page. Fixes #918 * More alabaster customizations, starting on TOC * CHANGES for #835 * It's possible but unlikely that we need combine * We actually require cryptography-based PyOpenSSL now. * PySocks 1.5.7 causes problems with IPv6. * fixing socks and ssl docstrings. * Fix doc syntax in user-guide.rst * Urllib3 -> urllib3 * Removing uneeded files. * Dear tox: plz propagate env vars. Thanks. * Favour our own match_hostname over old versions. * Bow before our fruit overlords. * enforce_content_length for incrementally read responses * fixing incorrect message for IncompleteRead * Update setup.cfg * Changelog for #986. * Spelling fixes * Line breaks. * Adding docs/requirements.txt for readthedocs. * CHANGES for #989. * Normalize the scheme and host in the URL parser * Update changes for 1.17 * Changes for #979 * Changelog update for #947. * Update connectionpool.py * Make BodyNotHttplibCompatible inherit from HttpError, urllib3's base exception class, only * Update changes for 1.18 * Update PyOpenSSL to not use ndg-httpsclient or pyasn1 * Retry history changed from list to tuple * Add a cert with IP SAN and test for it. * parse_retry_after: Disallow non-integer digits, allow whitespace * Add failing test for #1009. * Remove markers from setup.py. * Use Travis supplied PyPy 5.3 * Support retry for 413, 429 and 503 status code * Remove ipaddress marker. * Revert "Vendor a backport of the ipaddress module." * Adding retry section * CVE-2016-9015: Correct set verify flags. * Update CHANGES.rst for #911 * Tests for case-insensitivity in the scheme and host * Add changelog for #967. * Try updating setuptools. * Updating flake8 locations * Forward-port 1.18.1 changelog. * Update [secure] extra. * Add more advanced usage docs * CHANGES for #990 * [contrib/pyopenssl] remove unused ssl_wrap_socket * Import more from six * Thu Sep 1 2016 tbechtold@suse.com - update to 1.16: * Disable IPv6 DNS when IPv6 connections are not possible. (Issue #840) * Provide ``key_fn_by_scheme`` pool keying mechanism that can be overridden. (Issue #830) * Normalize scheme and host to lowercase for pool keys, and include ``source_address``. (Issue #830) * Cleaner exception chain in Python 3 for ``_make_request``. (Issue #861) * Fixed installing ``urllib3[socks]`` extra. (Issue #864) * Fixed signature of ``ConnectionPool.close`` so it can actually safely be called by subclasses. (Issue #873) * Retain ``release_conn`` state across retries. (Issues #651, #866) * Add customizable ``HTTPConnectionPool.ResponseCls``, which defaults to ``HTTPResponse`` but can be replaced with a subclass. (Issue #879) - Use pypi.io as Source url * Fri May 20 2016 dmueller@suse.com - update to 1.15.1: * Fix packaging to include backports module. (Issue #841) * Added Retry(raise_on_status=False). (Issue #720) * Always use setuptools, no more distutils fallback. (Issue #785) * Dropped support for Python 3.2. (Issue #786) * Chunked transfer encoding when requesting with ``chunked=True``. * Fixed regression with IPv6 port parsing. (Issue #801) * Append SNIMissingWarning messages to allow users to specify it in the PYTHONWARNINGS environment variable. (Issue #816) * Handle unicode headers in Py2. (Issue #818) * Log certificate when there is a hostname mismatch. (Issue #820) * Preserve order of request/response headers. (Issue #821) * Wed Mar 2 2016 jmatejek@suse.com - change Requires on pyopenssl, pyasn1 into Recommends, add ndg-httpsclient as well (these are dependencies of urrlib3's pyopenssl module, which can be used if native python's ssl capabilities are not good enough) * Thu Feb 11 2016 aplanas@suse.com - Update 1.14 source tar.gz from the source * Rebase urllib3-test-no-coverage.patch * Tue Jan 5 2016 hpj@urpla.net - Update to Version 1.14 (2015-12-29) * contrib: SOCKS proxy support! (Issue #762) * Fixed AppEngine handling of transfer-encoding header and bug in Timeout defaults checking. (Issue #763) - Update to Version 1.13.1 (2015-12-18) * Fixed regression in IPv6 + SSL for match_hostname. (Issue #761) - Update to Version 1.13 (2015-12-14) * Fixed pip install urllib3[secure] on modern pip. (Issue #706) * pyopenssl: Fixed SSL3_WRITE_PENDING error. (Issue #717) * pyopenssl: Support for TLSv1.1 and TLSv1.2. (Issue #696) * Close connections more defensively on exception. (Issue #734) * Adjusted read_chunked to handle gzipped, chunk-encoded bodies without repeatedly flushing the decoder, to function better on Jython. (Issue #743) * Accept ca_cert_dir for SSL-related PoolManager configuration. (Issue #758) - removed ready-event.patch: applied upstream - disabled more dysfunctional tests * Mon Nov 16 2015 hpj@urpla.net - restored ability to build with openSUSE <= 13.2 * Tue Oct 27 2015 jmatejek@suse.com - removed python-certifi dependency, we don't want to use it - drop 0001-Don-t-pin-dependency-to-exact-version.patch because it's not needed anymore - re-enable tests, re-add relevant dependencies * don't exclude test_util.py * exclude proxy timeout tests that fail for spurious reasons - urllib3-ssl-default-context.patch - use set_default_verify_paths() if no certificate path specified and verification not explicitly disabled - urllib3-test-ssl-drop-sslv3.patch - don't use "SSLv3" constants in python 2.7.9 and up - ready-event.patch - fix race conditions in timeout tests - drop %%pre section because apparently "egg-info as file" is no longer true and this breaks builds * Wed Oct 14 2015 toddrme2178@gmail.com - Delete the system egg-info during pre phase: older versions of the package installed it as a directory, the latest update creates a file, and rpm has known issues with replacing this. * Tue Oct 6 2015 hpj@urpla.net - add python-pyOpenSSL, python-certifi and python-pyasn1 requirements * Tue Oct 6 2015 hpj@urpla.net - Comment out test requirements, as tests are disabled anyway, and one of these packages depend on python-requests, which depends on this package resulting in a circular dependency for openSUSE <= 13.1 * Fri Sep 25 2015 p.drouand@gmail.com - Update to version 1.12 * Rely on six for importing httplib to work around conflicts with other Python 3 shims. (Issue #688) * Add support for directories of certificate authorities, as supported by OpenSSL. (Issue #701) * New exception: NewConnectionError, raised when we fail to establish a new connection, usually ECONNREFUSED socket error. - Fix version dependencies - Add new build requirements following upstream changes * python-nose-exclude * python-tox * python-twine * python-wheel - Update 0001-Don-t-pin-dependency-to-exact-version.patch - Disable tests for now, as there require network * Thu Sep 11 2014 toddrme2178@gmail.com - Remove upstreamed 0001-Don-t-install-dummyserver-into-site-packages.patch - Rebase 0001-Don-t-pin-dependency-to-exact-version.patch and urllib3-test-no-coverage.patch - Update to version 1.9 (2014-07-04) * Shuffled around development-related files. If you're maintaining a distro package of urllib3, you may need to tweak things. (Issue #415) * Unverified HTTPS requests will trigger a warning on the first request. See our new security documentation for details. (Issue #426) * New retry logic and urllib3.util.retry.Retry configuration object. (Issue #326) * All raised exceptions should now wrapped in a urllib3.exceptions.HTTPException-extending exception. (Issue #326) * All errors during a retry-enabled request should be wrapped in urllib3.exceptions.MaxRetryError, including timeout-related exceptions which were previously exempt. Underlying error is accessible from the .reason propery. (Issue #326) * urllib3.exceptions.ConnectionError renamed to urllib3.exceptions.ProtocolError. (Issue #326) * Errors during response read (such as IncompleteRead) are now wrapped in urllib3.exceptions.ProtocolError. (Issue #418) * Requesting an empty host will raise urllib3.exceptions.LocationValueError. (Issue #417) * Catch read timeouts over SSL connections as urllib3.exceptions.ReadTimeoutError. (Issue #419) * Apply socket arguments before connecting. (Issue #427) - Update to version 1.8.3 (2014-06-23) * Fix TLS verification when using a proxy in Python 3.4.1. (Issue #385) * Add disable_cache option to urllib3.util.make_headers. (Issue #393) * Wrap socket.timeout exception with urllib3.exceptions.ReadTimeoutError. (Issue #399) * Fixed proxy-related bug where connections were being reused incorrectly. (Issues #366, #369) * Added socket_options keyword parameter which allows to define setsockopt configuration of new sockets. (Issue #397) * Removed HTTPConnection.tcp_nodelay in favor of HTTPConnection.default_socket_options. (Issue #397) * Fixed TypeError bug in Python 2.6.4. (Issue #411) - Update to version 1.8.2 (2014-04-17) * Fix urllib3.util not being included in the package. - Update to version 1.8.1 (2014-04-17) * Fix AppEngine bug of HTTPS requests going out as HTTP. (Issue #356) * Don't install dummyserver into site-packages as it's only needed for the test suite. (Issue #362) * Added support for specifying source_address. (Issue #352) * Thu Mar 20 2014 speilicke@suse.com - Update to version 1.8: * Improved url parsing in urllib3.util.parse_url (properly parse '@' in username, and blank ports like 'hostname:'). * New urllib3.connection module which contains all the HTTPConnection objects. * Several urllib3.util.Timeout-related fixes. Also changed constructor signature to a more sensible order. [Backwards incompatible] (Issues #252, #262, #263) * Use backports.ssl_match_hostname if it's installed. (Issue #274) * Added .tell() method to urllib3.response.HTTPResponse which returns the number of bytes read so far. (Issue #277) * Support for platforms without threading. (Issue #289) * Expand default-port comparison in HTTPConnectionPool.is_same_host to allow a pool with no specified port to be considered equal to to an HTTP/HTTPS url with port 80/443 explicitly provided. (Issue #305) * Improved default SSL/TLS settings to avoid vulnerabilities. (Issue #309) * Fixed urllib3.poolmanager.ProxyManager not retrying on connect errors. (Issue #310) * Disable Nagle's Algorithm on the socket for non-proxies. A subset of requests will send the entire HTTP request ~200 milliseconds faster; however, some of the resulting TCP packets will be smaller. (Issue #254) * Increased maximum number of SubjectAltNames in urllib3.contrib.pyopenssl from the default 64 to 1024 in a single certificate. (Issue #318) * Headers are now passed and stored as a custom urllib3.collections_.HTTPHeaderDict object rather than a plain dict. (Issue #329, #333) * Headers no longer lose their case on Python 3. (Issue #236) * urllib3.contrib.pyopenssl now uses the operating system's default CA certificates on inject. (Issue #332) * Requests with retries=False will immediately raise any exceptions without wrapping them in MaxRetryError. (Issue #348) * Fixed open socket leak with SSL-related failures. (Issue #344, #348) - Run testsuite (without coverage) + urllib3-test-no-coverage.patch - Fix superfluous dependencies and allow later version + 0001-Don-t-pin-dependency-to-exact-version.patch - Drop dummyserver module, this really is documentation + 0001-Don-t-install-dummyserver-into-site-packages.patch * Fri Nov 15 2013 p.drouand@gmail.com - Update to version 1.7.1 + Added granular timeout support with new urllib3.util.Timeout class. (Issue #231) + Fixed Python 3.4 support. (Issue #238) - Changes from 1.7 + More exceptions are now pickle-able, with tests. (Issue #174) + Fixed redirecting with relative URLs in Location header. (Issue #178) + Support for relative urls in Location: ... header. (Issue #179) + urllib3.response.HTTPResponse now inherits from io.IOBase for bonus file-like functionality. (Issue #187) + Passing assert_hostname=False when creating a HTTPSConnectionPool will skip hostname verification for SSL connections. (Issue #194) + New method urllib3.response.HTTPResponse.stream(...) which acts as a generator wrapped around .read(...). (Issue #198) + IPv6 url parsing enforces brackets around the hostname. (Issue #199) + Fixed thread race condition in urllib3.poolmanager.PoolManager.connection_from_host(...) (Issue #204) + ProxyManager requests now include non-default port in Host: ... header. (Issue #217) + Added HTTPS proxy support in ProxyManager. (Issue #170 #139) + New RequestField object can be passed to the fields=... param which can specify headers. (Issue #220) + Raise urllib3.exceptions.ProxyError when connecting to proxy fails. (Issue #221) + Use international headers when posting file names. (Issue #119) + Improved IPv6 support. (Issue #203) - Add documentation from tarball * Sun Jul 14 2013 alexandre@exatati.com.br - Initial package (1.6) for openSUSE.