- update to 2.16.5:

* unvendored bundled libraries
- drop no-default-cacert.patch: this is now in python-certifi
- drop requests-do-not-use-bundle.patch: obsolete

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-requests?expand=0&rev=100
This commit is contained in:
Dirk Mueller 2017-06-10 09:03:49 +00:00 committed by Git OBS Bridge
parent bf9ba7bf34
commit 22edbfd5c9
8 changed files with 22 additions and 168 deletions

View File

@ -1,29 +0,0 @@
Requests is a tricky package.
The unbundling of urllib3 is unsupported by upstream; AFAICT, mostly because
people are being unreasonable and *third-party packages* expect the bundled
urllib3 to exist. And requests upstream wants to support that usecase.
Therefore, extra care must be taken with the unbundling.
First, upstream also recognizes that we distributors will unbundle, and
actually include a helpful shim in requests/packages/__init__.py. This is to
make sure that importing `requests.packages.urllib3` works even if it is
unbundled, and also that you will get the identical import (unlike if we
installed symlinks, in which case Python would consider `r.p.urrlib3` and
`urllib3` to be different packages. See the file __init__.py for more
information.
We want to keep the shim, so we must install requests/packages/__init__.py
even though we don't install the subdirectories.
Second, it is our job to set requirements in the egg-info properly, so that
users of virtualenvs get the right thing in certain unusual configurations.
Third, requests are at times sensitive to version of urllib3. Historically,
requests even bundled pre-release versions. This will probably not happen
again, but it does mean that we must express requirements for a certain
version of urllib3. I have taken some pains to make the build fail if the
right version of urllib3 is not present. Make sure that urllib3 is updated
first, and run `set_urllib3_version.sh` to update the definition in the spec
file.

View File

@ -1,60 +0,0 @@
Index: requests-2.12.4/MANIFEST.in
===================================================================
--- requests-2.12.4.orig/MANIFEST.in
+++ requests-2.12.4/MANIFEST.in
@@ -1 +1 @@
-include README.rst LICENSE NOTICE HISTORY.rst test_requests.py requirements.txt requests/cacert.pem
+include README.rst LICENSE NOTICE HISTORY.rst test_requests.py requirements.txt
Index: requests-2.12.4/requests/adapters.py
===================================================================
--- requests-2.12.4.orig/requests/adapters.py
+++ requests-2.12.4/requests/adapters.py
@@ -213,15 +213,13 @@ class HTTPAdapter(BaseAdapter):
if verify is not True:
cert_loc = verify
- if not cert_loc:
- cert_loc = DEFAULT_CA_BUNDLE_PATH
-
- if not cert_loc:
- raise Exception("Could not find a suitable SSL CA certificate bundle.")
-
conn.cert_reqs = 'CERT_REQUIRED'
- if not os.path.isdir(cert_loc):
+ if cert_loc is None:
+ # use default context
+ conn.ca_certs = None
+ conn.ca_cert_dir = None
+ elif not os.path.isdir(cert_loc):
conn.ca_certs = cert_loc
else:
conn.ca_cert_dir = cert_loc
Index: requests-2.12.4/requests/certs.py
===================================================================
--- requests-2.12.4.orig/requests/certs.py
+++ requests-2.12.4/requests/certs.py
@@ -18,8 +18,9 @@ try:
except ImportError:
def where():
"""Return the preferred certificate bundle."""
- # vendored bundle inside Requests
- return os.path.join(os.path.dirname(__file__), 'cacert.pem')
+ # in openSUSE we rely on ca-certificates instead of
+ # having an another bundle
+ return '/etc/ssl/ca-bundle.pem'
if __name__ == '__main__':
print(where())
diff -rupN requests-2.10.0.orig/setup.py requests-2.10.0/setup.py
--- requests-2.10.0.orig/setup.py 2016-04-29 18:03:18.000000000 -0400
+++ requests-2.10.0/setup.py 2016-06-03 01:17:13.549030517 -0400
@@ -68,7 +68,7 @@ setup(
author_email='me@kennethreitz.com',
url='http://python-requests.org',
packages=packages,
- package_data={'': ['LICENSE', 'NOTICE'], 'requests': ['*.pem']},
+ package_data={'': ['LICENSE', 'NOTICE']},
package_dir={'requests': 'requests'},
include_package_data=True,
install_requires=requires,

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Sat Jun 10 08:40:50 UTC 2017 - dmueller@suse.com
- update to 2.16.5:
* unvendored bundled libraries
- drop no-default-cacert.patch: this is now in python-certifi
- drop requests-do-not-use-bundle.patch: obsolete
-------------------------------------------------------------------
Fri May 5 22:43:27 UTC 2017 - jengelh@inai.de

View File

@ -16,23 +16,17 @@
#
%define urllib3_version 1.20
%define urllib3_version 1.21.1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-requests
Version: 2.13.0
Version: 2.16.5
Release: 0
Summary: Awesome Python HTTP Library That's Actually Usable
License: Apache-2.0
Group: Development/Languages/Python
Url: http://python-requests.org/
#Source: https://files.pythonhosted.org/packages/source/r/requests/requests-%{version}.tar.gz
Source: https://github.com/kennethreitz/requests/archive/v%{version}.tar.gz
Source100: PACKAGING_NOTES
Source101: set_urllib3_version.sh
# PATCH-FIX-OPENSUSE no-default-cacert.patch -- Completely ignore the internal CA bundle.
Patch0: no-default-cacert.patch
# PATCH-FIX-OPENSUSE requests-do-not-use-bundle.patch -- Use system libraries instead of bundled ones.
Patch1: requests-do-not-use-bundle.patch
Source: https://files.pythonhosted.org/packages/source/r/requests/requests-%{version}.tar.gz
BuildRequires: %{python_module certifi}
BuildRequires: %{python_module devel}
BuildRequires: %{python_module py}
BuildRequires: %{python_module setuptools}
@ -42,8 +36,8 @@ BuildRequires: python
BuildRequires: python-rpm-macros
# SECTION test requirements
BuildRequires: %{python_module PySocks >= 1.5.6}
BuildRequires: %{python_module chardet}
BuildRequires: %{python_module idna >= 2.2}
BuildRequires: %{python_module chardet >= 3.0.2}
BuildRequires: %{python_module idna >= 2.5}
BuildRequires: %{python_module pytest-httpbin}
BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module pytest}
@ -55,7 +49,8 @@ Recommends: ca-certificates-mozilla
Recommends: python-pyOpenSSL >= 0.14
Recommends: python-cryptography >= 1.3.4
Recommends: python-PySocks >= 1.5.6
Requires: python-chardet
Requires: python-certifi >= 2017.4.17
Requires: python-chardet >= 3.0.2
Requires: python-idna >= 2.2
Requires: python-py
Requires: python-urllib3 >= %urllib3_version
@ -83,13 +78,7 @@ Features of Requests:
%prep
%setup -q -n requests-%{version}
%patch0 -p1
%patch1 -p1
rm -f requests/cacert.pem
# fill out required urllib3 version
sed -i s/#URLLIB3VERSION#/%{urllib3_version}/ setup.py
echo "urllib3 >= %{urllib3_version}" >> requirements.txt
# drop shebang from certs.py
sed -i '1s/^#!.*$//' requests/certs.py
@ -102,24 +91,13 @@ sed -i '1s/^#!.*$//' requests/certs.py
test ! -e %{buildroot}%{python3_sitelib}/requests/packages/urllib3
%check
# first check that we have a good version of urllib3
# DO NOT DISABLE THIS TEST unless you know what you are doing
# see PACKAGING_NOTES for details
python3 <<END
import sys, pkg_resources
from requests.packages.urllib3 import __version__
required = "urllib3 >= {}".format(__version__)
dist = pkg_resources.get_distribution(required)
if dist is None or not dist.location.startswith("%{_prefix}"):
sys.exit(1)
END
touch requirements.txt
# exclude tests connecting to TARPIT
%python_exec -m pytest tests -k "not (TestTimeout and connect)"
%files %{python_files}
%defattr(-,root,root)
%doc HISTORY.rst LICENSE NOTICE README.rst
%doc HISTORY.rst LICENSE README.rst
%{python_sitelib}/requests/
%{python_sitelib}/requests-*

3
requests-2.16.5.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f717303ebff661099cc5b73ce723ae1246f19ac39faa4c8005be56744d1a1006
size 122929

View File

@ -1,32 +0,0 @@
Index: requests-2.13.0/setup.py
===================================================================
--- requests-2.13.0.orig/setup.py
+++ requests-2.13.0/setup.py
@@ -36,17 +36,9 @@ if sys.argv[-1] == 'publish':
packages = [
'requests',
'requests.packages',
- 'requests.packages.chardet',
- 'requests.packages.idna',
- 'requests.packages.urllib3',
- 'requests.packages.urllib3.packages',
- 'requests.packages.urllib3.contrib',
- 'requests.packages.urllib3.util',
- 'requests.packages.urllib3.packages.ssl_match_hostname',
- 'requests.packages.urllib3.packages.backports',
]
-requires = []
+requires = ['chardet', 'idna', 'urllib3 >= #URLLIB3VERSION#']
test_requirements = ['pytest>=2.8.0', 'pytest-httpbin==0.0.7', 'pytest-cov', 'pytest-mock']
with open('requests/__init__.py', 'r') as fd:
@@ -72,7 +64,7 @@ setup(
packages=packages,
package_data={'': ['LICENSE', 'NOTICE']},
package_dir={'requests': 'requests'},
- include_package_data=True,
+ include_package_data=False,
install_requires=requires,
license='Apache 2.0',
zip_safe=False,

View File

@ -1,12 +0,0 @@
#!/bin/bash
wd=$PWD
tmpdir=`mktemp -d`
cd $tmpdir
tar xzf $wd/requests-*.tar.gz
cd requests-*
version=`python3 -c 'from requests.packages.urllib3 import __version__; print(__version__, end="")'`
cd ../..
rm -rf $tmpdir
cd $wd
sed -i 's/%define urllib3_version .*$/%define urllib3_version '"$version"'/' python-requests.spec

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48fd188aaa388b4193bf7b917cf861a00eafacad651148475bc65ffaef445627
size 3341123