This commit is contained in:
songnannan 2019-12-28 09:22:29 +08:00
parent 58c59a8e22
commit 81c354da8a
7 changed files with 298 additions and 0 deletions

View File

@ -0,0 +1,38 @@
From 86b1fa39fdebdb7bc57131c1a198d4d18e104f95 Mon Sep 17 00:00:00 2001
From: Jeremy Cline <jeremy@jcline.org>
Date: Mon, 16 Apr 2018 10:35:35 -0400
Subject: [PATCH] Don't inject pyopenssl into urllib3
Fedora ships sufficiently new versions of Python 2 and 3 to make this
unnecessary (rhbz 1567862)
Signed-off-by: Jeremy Cline <jeremy@jcline.org>
---
requests/__init__.py | 7 -------
1 file changed, 7 deletions(-)
diff --git a/requests/__init__.py b/requests/__init__.py
index a5b3c9c3..e312d314 100644
--- a/requests/__init__.py
+++ b/requests/__init__.py
@@ -90,17 +90,6 @@ except (AssertionError, ValueError):
"version!".format(urllib3.__version__, chardet.__version__),
RequestsDependencyWarning)
-# Attempt to enable urllib3's SNI support, if possible
-try:
- from urllib3.contrib import pyopenssl
- pyopenssl.inject_into_urllib3()
-
- # Check cryptography version
- from cryptography import __version__ as cryptography_version
- _check_cryptography(cryptography_version)
-except ImportError:
- pass
-
# urllib3's DependencyWarnings should be silenced.
from urllib3.exceptions import DependencyWarning
warnings.simplefilter('ignore', DependencyWarning)
--
2.17.0

View File

@ -0,0 +1,55 @@
From 524cd22fb77e69db9bb3f017bbb1d9782c37b0cd Mon Sep 17 00:00:00 2001
From: Jeremy Cline <jeremy@jcline.org>
Date: Tue, 13 Jun 2017 09:08:09 -0400
Subject: [PATCH] Remove tests that use the tarpit
The latest version of Mock has started using systemd containers. The
systemd-nspawn command is being run with --private-network, which
immediately kills connections to something other than localhost. These
tests depend on the connection not being killed immediately and that
they are never responded to.
Signed-off-by: Jeremy Cline <jeremy@jcline.org>
---
tests/test_requests.py | 25 -------------------------
1 file changed, 25 deletions(-)
diff --git a/tests/test_requests.py b/tests/test_requests.py
index b8350cb..46b7e9e 100755
--- a/tests/test_requests.py
+++ b/tests/test_requests.py
@@ -2049,31 +2049,6 @@ class TestTimeout:
except ReadTimeout:
pass
- @pytest.mark.parametrize(
- 'timeout', (
- (0.1, None),
- Urllib3Timeout(connect=0.1, read=None)
- ))
- def test_connect_timeout(self, timeout):
- try:
- requests.get(TARPIT, timeout=timeout)
- pytest.fail('The connect() request should time out.')
- except ConnectTimeout as e:
- assert isinstance(e, ConnectionError)
- assert isinstance(e, Timeout)
-
- @pytest.mark.parametrize(
- 'timeout', (
- (0.1, 0.1),
- Urllib3Timeout(connect=0.1, read=0.1)
- ))
- def test_total_timeout_connect(self, timeout):
- try:
- requests.get(TARPIT, timeout=timeout)
- pytest.fail('The connect() request should time out.')
- except ConnectTimeout:
- pass
-
def test_encoded_methods(self, httpbin):
"""See: https://github.com/requests/requests/issues/2316"""
r = requests.request(b'GET', httpbin('get'))
--
2.9.4

View File

@ -0,0 +1,26 @@
diff -uNrp a/requests/certs.py b/requests/certs.py
--- a/requests/certs.py 2019-12-20 15:17:38.304000000 +0800
+++ b/requests/certs.py 2019-12-20 15:25:18.952000000 +0800
@@ -11,7 +11,10 @@ If you are packaging Requests, e.g., for
environment, you can change the definition of where() to return a separately
packaged CA bundle.
"""
-from certifi import where
+def where():
+ """Return the absolute path to the system CA bundle."""
+ return '/etc/pki/tls/certs/ca-bundle.crt'
+
if __name__ == '__main__':
print(where())
diff -uNrp a/setup.py b/setup.py
--- a/setup.py 2019-12-20 15:17:38.304000000 +0800
+++ b/setup.py 2019-12-20 15:14:39.212000000 +0800
@@ -45,7 +45,6 @@ requires = [
'chardet>=3.0.2,<3.1.0',
'idna>=2.5,<2.9',
'urllib3>=1.21.1,<1.25',
- 'certifi>=2017.4.17'
]
test_requirements = [

134
python-requests.spec Normal file
View File

@ -0,0 +1,134 @@
%bcond_with tests
Name: python-requests
Version: 2.21.0
Release: 4
Summary: Python HTTP Library
License: ASL 2.0
URL: http://python-requests.org/
Source0: https://github.com/requests/requests/archive/v%{version}/requests-v%{version}.tar.gz
#These patches are from Redhat
Patch0: patch-requests-certs.py-to-use-the-system-CA-bundle.patch
Patch2: Remove-tests-that-use-the-tarpit.patch
Patch3: requests-2.12.4-tests_nonet.patch
Patch4: Don-t-inject-pyopenssl-into-urllib3.patch
Patch5: requests-2.20.0-no-py2-httpbin.patch
BuildArch: noarch
%description
Requests is an HTTP library, written in Python, as an alternative
to Python's builtin urllib2 which requires work (even
method overrides) to perform basic tasks.
Features of Requests:
- GET, HEAD, POST, PUT, DELETE Requests:
+ HTTP Header Request Attachment.
+ Data/Params Request Attachment.
+ Multipart File Uploads.
+ CookieJar Support.
+ Redirection History.
+ Redirection Recursion Urllib Fix.
+ Automatic Decompression of GZipped Content.
+ Unicode URL Support.
- Authentication:
+ URL + HTTP Auth Registry.
%package -n python2-requests
Summary: HTTP library, written in Python, for human beings
%{?python_provide:%python_provide python2-requests}
BuildRequires: python2-devel python2-idna python2-chardet python2-urllib3
%if %{with tests}
BuildRequires: python2-pytest python2-pytest-mock python2-pytest-cov
%endif
Requires: ca-certificates python2-idna python2-chardet python2-urllib3
%description -n python2-requests
This package exists only to allow packagers to uniformly depend on
python2-requests.
%package -n python%{python3_pkgversion}-requests
Summary: Awesome Python HTTP Library That's Actually Usable
%{?python_provide:%python_provide python%{python3_pkgversion}-requests}
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-chardet
BuildRequires: python%{python3_pkgversion}-urllib3
BuildRequires: python%{python3_pkgversion}-idna
%if %{with tests}
BuildRequires: python%{python3_pkgversion}-pytest
BuildRequires: python%{python3_pkgversion}-pytest-cov
BuildRequires: python%{python3_pkgversion}-pytest-httpbin
BuildRequires: python%{python3_pkgversion}-pytest-mock
%endif
Requires: python%{python3_pkgversion}-chardet
Requires: python%{python3_pkgversion}-urllib3
Requires: python%{python3_pkgversion}-idna
%description -n python%{python3_pkgversion}-requests
Requests is an ISC Licensed HTTP library, written in Python, for human
beings.
Most existing Python modules for sending HTTP requests are extremely
verbose and cumbersome. Python's builtin urllib2 module provides most of
the HTTP capabilities you should need, but the api is thoroughly broken.
It requires an enormous amount of work (even method overrides) to
perform the simplest of tasks.
%package_help
%prep
%autosetup -p1 -n requests-%{version}
rm -rf requests/cacert.pem
sed -i '/#!\/usr\/.*python/d' requests/certs.py
%build
%py2_build
%py3_build
%install
%py2_install
%py3_install
%if %{with tests}
%check
PYTHONPATH=%{buildroot}%{python2_sitelib} %{__python2} -m pytest -v
PYTHONPATH=%{buildroot}%{python3_sitelib} %{__python3} -m pytest -v
%endif # tests
%files -n python2-requests
%license LICENSE
%{python2_sitelib}/*.egg-info
%{python2_sitelib}/requests/
%files -n python%{python3_pkgversion}-requests
%defattr(-,root,root)
%license LICENSE
%{python3_sitelib}/*.egg-info
%{python3_sitelib}/requests/
%files help
%defattr(-,root,root)
%doc HISTORY.md README.md
%changelog
* Fri Dec 20 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.21.0-4
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:modify the patch
* Wed Oct 30 2019 hexiaowen <hexiaowen@huawei.com> - 2.21.0-3
- disable tests
* Thu Oct 17 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.21.0-2
- Type:bugfix
- Id:NA
- SUG:NA
- DESC:add the provides of python3
* Wed Sep 25 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.21.0-1
- Package init

View File

@ -0,0 +1,11 @@
--- requests-2.12.4/tests/testserver/server.py 2016-12-21 11:31:56.000000000 -0800
+++ requests-2.12.4/tests/testserver/server.py.new 2016-12-30 10:40:06.085995065 -0800
@@ -27,7 +27,7 @@
"""Dummy server using for unit testing"""
WAIT_EVENT_TIMEOUT = 5
- def __init__(self, handler=None, host='localhost', port=0, requests_to_handle=1, wait_to_close_event=None):
+ def __init__(self, handler=None, host='127.0.0.1', port=0, requests_to_handle=1, wait_to_close_event=None):
super(Server, self).__init__()
self.handler = handler or consume_socket_content

View File

@ -0,0 +1,34 @@
diff --git a/tests/conftest.py b/tests/conftest.py
index cd64a76..1d5ddbb 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -14,11 +14,23 @@ def prepare_url(value):
return inner
-@pytest.fixture
-def httpbin(httpbin):
- return prepare_url(httpbin)
+import sys
+if sys.version_info[0] < 3:
+ @pytest.fixture
+ def httpbin():
+ pytest.skip('No httpbin for Python 2')
-@pytest.fixture
-def httpbin_secure(httpbin_secure):
- return prepare_url(httpbin_secure)
+ @pytest.fixture
+ def httpbin_secure():
+ pytest.skip('No httpbin for Python 2')
+
+else:
+ @pytest.fixture
+ def httpbin(httpbin):
+ return prepare_url(httpbin)
+
+
+ @pytest.fixture
+ def httpbin_secure(httpbin_secure):
+ return prepare_url(httpbin_secure)

BIN
requests-v2.21.0.tar.gz Normal file

Binary file not shown.