Accepting request 507839 from devel:languages:python

1

OBS-URL: https://build.opensuse.org/request/show/507839
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-requests?expand=0&rev=43
This commit is contained in:
Dominique Leuenberger 2017-07-04 09:57:50 +00:00 committed by Git OBS Bridge
commit ed0ab381ed
8 changed files with 104 additions and 171 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,92 @@
-------------------------------------------------------------------
Mon Jul 3 11:36:40 UTC 2017 - tbechtold@suse.com
update to version v2.18.1
* 2.17.1
* Fix a typo: verison -> version
* fix
* Prepare v2.18.0
* Update requirements.txt
* cleanup models.py
* Preserve identity of unbundled deps
* ignore undefined names in flake8
* flake8 ignore lambda expressions
* Add the pytest .cache/ directory to .gitignore
* docutils
* try junit
* new installation location
* cleanup utils.py
* flake8report.txt
* empty commit
* no more pipenv
* Begin dev section of README
* Remove exec permission from files that shouldn't have it
* change development philosophy docs to reflect reality
* fix manifest file
* only flake8 the right directory
* update development documentation
* Remove session redirect cache
* no piping to a file
* Catch error if multiprocessing is not available or is unable to determine the number of CPUs
* todo
* cleanup sessions.py
* typo
* number of cores for travis
* ignore import statements for flake8
* Update README.rst
* better ci file
* bunk change
* that doesn't work on windows
* improve development instructions
* Fix a typo: paramters -> parameters
* Adds changelog entry for #4134
* ignore line continuations for flake8
* Allow Requests.Response to be used as a context manager
* Fix requests.packages not having package attributes
* remove note about cacerts.pem
* v2.17.3
* improve install documentation syntax
* improve installation instructions
* flake8: import statement improvements
* fix spaces in api.py
* v2.18.1
* skip for now
* v2.17.2
* fix flake8 for EOF in __init__.py
* improve flake8 help.py
* Prepare for next release cycle
* try this travis file
* remove "are you crazy?" section
* fix sidebars
* Update index.rst
* fix empty lines for flake8
* convert version compatibility checks to warning
* fix github stars
* v2.17.1
* improve line continuations for flake8
* attempt new ads
* speed up appveyor
* v2.17.0
* improve installation docs
* fix flake8 indent error
* Adds to AUTHORS
* Clearer makefile for building README
* flake8
* Fixes error swallowing in set_environ
* cleanup help.py (flake8)
* improve install docs
* new requests namespace
-------------------------------------------------------------------
Sat Jun 10 08:40:50 UTC 2017 - dmueller@suse.com
- update to 2.16.5:
* unvendored bundled libraries
* for more changes, see https://pypi.python.org/pypi/requests
- 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,34 +16,27 @@
#
%define urllib3_version 1.20
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-requests
Version: 2.13.0
Version: 2.18.1
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}
BuildRequires: %{python_module urllib3 >= %urllib3_version}
BuildRequires: %{python_module urllib3 >= 1.21.1}
BuildRequires: ca-certificates
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,10 +48,11 @@ 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-idna >= 2.2
Requires: python-certifi >= 2017.4.17
Requires: python-chardet >= 3.0.2
Requires: python-idna >= 2.5
Requires: python-py
Requires: python-urllib3 >= %urllib3_version
Requires: python-urllib3 >= 1.21.1
BuildArch: noarch
%python_subpackages
@ -83,13 +77,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 +90,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.18.1.tar.gz Normal file
View File

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

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