From fae896e5eef84f926c4b06223f3290fe91c824b7 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Feb 28 2013 17:38:33 +0000 Subject: Merge branch 'master' into f17 Conflicts: .gitignore python-requests.spec sources --- diff --git a/.gitignore b/.gitignore index 321be65..3fb1685 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /requests-0.11.1.tar.gz /requests-0.13.1.tar.gz /requests-0.14.1.tar.gz +/requests-1.1.0.tar.gz diff --git a/python-requests-system-cert-bundle.patch b/python-requests-system-cert-bundle.patch new file mode 100644 index 0000000..9184c66 --- /dev/null +++ b/python-requests-system-cert-bundle.patch @@ -0,0 +1,44 @@ +From 415619361cc23dd87b1a7a5fd0cfba38e33d24fd Mon Sep 17 00:00:00 2001 +From: Ralph Bean +Date: Wed, 27 Feb 2013 09:16:20 -0500 +Subject: [PATCH] system cert bundle + +--- + requests/certs.py | 17 +++++------------ + 1 file changed, 5 insertions(+), 12 deletions(-) + +diff --git a/requests/certs.py b/requests/certs.py +index 8148276..6e07f5e 100644 +--- a/requests/certs.py ++++ b/requests/certs.py +@@ -10,22 +10,15 @@ This module returns the preferred default CA certificate bundle. + If you are packaging Requests, e.g., for a Linux distribution or a managed + environment, you can change the definition of where() to return a separately + packaged CA bundle. +-""" +- +-import os.path + +-certifi = None +-try: +- import certifi +-except ImportError: +- pass ++We return "/etc/pki/tls/certs/ca-bundle.crt" provided by the ca-certificates ++package. ++""" + + def where(): + """Return the preferred certificate bundle.""" +- if certifi: +- return certifi.where() +- +- return os.path.join(os.path.dirname(__file__), 'cacert.pem') ++ # Don't use the certs bundled with requests, use ca-certificates'. ++ return "/etc/pki/tls/certs/ca-bundle.crt" + + if __name__ == '__main__': + print(where()) +-- +1.8.1.2 + diff --git a/python-requests-system-chardet-not-charade.patch b/python-requests-system-chardet-not-charade.patch new file mode 100644 index 0000000..e9abcf2 --- /dev/null +++ b/python-requests-system-chardet-not-charade.patch @@ -0,0 +1,25 @@ +From 07c1df1053a61ec5097fe79c68aba7fda7bac3b5 Mon Sep 17 00:00:00 2001 +From: Ralph Bean +Date: Wed, 27 Feb 2013 10:03:41 -0500 +Subject: [PATCH] Use system chardet, not charade. + +--- + requests/compat.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/requests/compat.py b/requests/compat.py +index 5bd4fcb..39421ed 100644 +--- a/requests/compat.py ++++ b/requests/compat.py +@@ -4,7 +4,7 @@ + pythoncompat + """ + +-from .packages import charade as chardet ++import chardet + + import sys + +-- +1.8.1.2 + diff --git a/python-requests-system-urllib3.patch b/python-requests-system-urllib3.patch new file mode 100644 index 0000000..90b078b --- /dev/null +++ b/python-requests-system-urllib3.patch @@ -0,0 +1,81 @@ +From 5d23c608e72025f72e1f3223cb6c7e3979e93c7f Mon Sep 17 00:00:00 2001 +From: Ralph Bean +Date: Thu, 28 Feb 2013 10:57:20 -0500 +Subject: [PATCH] system-urllib3 + +--- + requests/adapters.py | 12 ++++++------ + requests/compat.py | 6 +++++- + requests/models.py | 4 ++-- + 3 files changed, 13 insertions(+), 9 deletions(-) + +diff --git a/requests/adapters.py b/requests/adapters.py +index 5f9d9c7..1f61bd6 100644 +--- a/requests/adapters.py ++++ b/requests/adapters.py +@@ -11,17 +11,17 @@ and maintain connections. + import socket + + from .models import Response +-from .packages.urllib3.poolmanager import PoolManager, proxy_from_url +-from .packages.urllib3.response import HTTPResponse ++from urllib3.poolmanager import PoolManager, proxy_from_url ++from urllib3.response import HTTPResponse + from .hooks import dispatch_hook + from .compat import urlparse, basestring, urldefrag + from .utils import (DEFAULT_CA_BUNDLE_PATH, get_encoding_from_headers, + prepend_scheme_if_needed) + from .structures import CaseInsensitiveDict +-from .packages.urllib3.exceptions import MaxRetryError +-from .packages.urllib3.exceptions import TimeoutError +-from .packages.urllib3.exceptions import SSLError as _SSLError +-from .packages.urllib3.exceptions import HTTPError as _HTTPError ++from urllib3.exceptions import MaxRetryError ++from urllib3.exceptions import TimeoutError ++from urllib3.exceptions import SSLError as _SSLError ++from urllib3.exceptions import HTTPError as _HTTPError + from .cookies import extract_cookies_to_jar + from .exceptions import ConnectionError, Timeout, SSLError + +diff --git a/requests/compat.py b/requests/compat.py +index 39421ed..d9ab218 100644 +--- a/requests/compat.py ++++ b/requests/compat.py +@@ -89,7 +89,11 @@ if is_py2: + import cookielib + from Cookie import Morsel + from StringIO import StringIO +- from .packages.urllib3.packages.ordered_dict import OrderedDict ++ ++ try: ++ from collections import OrderedDict ++ except ImportError: ++ from ordereddict import OrderedDict + + builtin_str = str + bytes = str +diff --git a/requests/models.py b/requests/models.py +index 5202e6f..218b4f2 100644 +--- a/requests/models.py ++++ b/requests/models.py +@@ -17,7 +17,7 @@ from .status_codes import codes + + from .auth import HTTPBasicAuth + from .cookies import cookiejar_from_dict, get_cookie_header +-from .packages.urllib3.filepost import encode_multipart_formdata ++from urllib3.filepost import encode_multipart_formdata + from .exceptions import HTTPError, RequestException, MissingSchema, InvalidURL + from .utils import ( + stream_untransfer, guess_filename, requote_uri, +@@ -121,7 +121,7 @@ class RequestEncodingMixin(object): + fp = StringIO(fp) + if isinstance(fp, bytes): + fp = BytesIO(fp) +- ++ + if ft: + new_v = (fn, fp.read(), ft) + else: +-- +1.8.1.2 + diff --git a/python-requests.spec b/python-requests.spec index bb7e940..a094e81 100644 --- a/python-requests.spec +++ b/python-requests.spec @@ -1,4 +1,4 @@ -%if 0%{?fedora} > 12 || 0%{?rhel} > 6 +%if 0%{?fedora} %global _with_python3 1 %else %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")} @@ -6,18 +6,37 @@ # Turn off the brp-python-bytecompile script #%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') Name: python-requests -Version: 0.14.1 -Release: 1%{?dist} +Version: 1.1.0 +Release: 3%{?dist} Summary: HTTP library, written in Python, for human beings -License: ISC and MIT +License: ASL 2.0 URL: http://pypi.python.org/pypi/requests Source0: http://pypi.python.org/packages/source/r/requests/requests-%{version}.tar.gz +# Explicitly use the system certificates in ca-certificates. +# https://bugzilla.redhat.com/show_bug.cgi?id=904614 +Patch0: python-requests-system-cert-bundle.patch +# Unbundle python-charade (a fork of python-chardet). +# https://bugzilla.redhat.com/show_bug.cgi?id=904623 +Patch1: python-requests-system-chardet-not-charade.patch +# Unbundle python-charade (a fork of python-urllib3). +# https://bugzilla.redhat.com/show_bug.cgi?id=904623 +Patch2: python-requests-system-urllib3.patch BuildArch: noarch BuildRequires: python2-devel +BuildRequires: python-chardet +BuildRequires: python-urllib3 + Requires: ca-certificates +Requires: python-chardet +Requires: python-urllib3 + +%if 0%{?rhel} +BuildRequires: python-ordereddict +Requires: python-ordereddict +%endif %description Most existing Python modules for sending HTTP requests are extremely verbose and @@ -28,7 +47,12 @@ designed to make HTTP requests easy for developers. %if 0%{?_with_python3} %package -n python3-requests Summary: HTTP library, written in Python, for human beings -BuildRequires: python3-devel +BuildRequires: python3-devel +BuildRequires: python3-chardet +BuildRequires: python3-urllib3 +Requires: python3-chardet +Requires: python3-urllib3 + %description -n python3-requests Most existing Python modules for sending HTTP requests are extremely verbose and cumbersome. Python’s built-in urllib2 module provides most of the HTTP @@ -36,32 +60,63 @@ capabilities you should need, but the API is thoroughly broken. This library is designed to make HTTP requests easy for developers. %endif - %prep %setup -q -n requests-%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 + +# Unbundle the certificate bundle from mozilla. +rm -rf requests/cacert.pem + +%if 0%{?_with_python3} +rm -rf %{py3dir} +cp -a . %{py3dir} +%endif # with_python3 + %build %if 0%{?_with_python3} +pushd %{py3dir} %{__python3} setup.py build + +# Unbundle chardet. Patch1 switches usage to system chardet. +rm -rf build/lib/requests/packages/charade + +# Unbundle urllib3. Patch1 switches usage to system urllib3. +rm -rf build/lib/requests/packages + +popd %endif + %{__python} setup.py build +# Unbundle chardet. Patch1 switches usage to system chardet. +rm -rf build/lib/requests/packages/charade + +# Unbundle urllib3. Patch1 switches usage to system urllib3. +rm -rf build/lib/requests/packages + %install rm -rf $RPM_BUILD_ROOT %if 0%{?_with_python3} -PYTHONDONTWRITEBYTECODE=1 %{__python3} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT -#%py_byte_compile %{__python} %{buildroot}%{python3_sitelib}/requests/packages/chardet2 -#%py_byte_compile %{__python} %{buildroot}%{python3_sitelib}/requests/packages/oauthlib -#%py_byte_compile %{__python} %{buildroot}%{python3_sitelib}/requests/packages/urllib3 -#%py_byte_compile %{__python} %{buildroot}%{python3_sitelib}/requests/*.py +pushd %{py3dir} +%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT +popd %endif -PYTHONDONTWRITEBYTECODE=1 %{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT -#%py_byte_compile %{__python} %{buildroot}%{python_sitelib}/requests/packages/chardet -#%py_byte_compile %{__python} %{buildroot}%{python_sitelib}/requests/packages/oauthlib -#%py_byte_compile %{__python} %{buildroot}%{python_sitelib}/requests/packages/urllib3 -#%py_byte_compile %{__python} %{buildroot}%{python_sitelib}/requests/*.py -# +%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT + +## The tests succeed if run locally, but fail in koji. +## They require an active network connection to query httpbin.org +#%%check +#%%{__python} test_requests.py +#%%if 0%%{?_with_python3} +#pushd %%{py3dir} +#%%{__python3} test_requests.py +#popd +#%%endif + %files %defattr(-,root,root,-) %doc NOTICE LICENSE README.rst HISTORY.rst @@ -75,8 +130,33 @@ PYTHONDONTWRITEBYTECODE=1 %{__python} setup.py install -O1 --skip-build --root $ %{python3_sitelib}/requests/ %endif - %changelog +* Thu Feb 28 2013 Ralph Bean - 1.1.0-3 +- Unbundled python-urllib3. Using system python-urllib3 now. +- Conditionally include python-ordereddict for el6. + +* Wed Feb 27 2013 Ralph Bean - 1.1.0-2 +- Unbundled python-charade/chardet. Using system python-chardet now. +- Removed deprecated comments and actions against oauthlib unbundling. + Those are no longer necessary in 1.1.0. +- Added links to bz tickets over Patch declarations. + +* Tue Feb 26 2013 Ralph Bean - 1.1.0-1 +- Latest upstream. +- Relicense to ASL 2.0 with upstream. +- Removed cookie handling patch (fixed in upstream tarball). +- Updated cert unbundling patch to match upstream. +- Added check section, but left it commented out for koji. + +* Fri Feb 8 2013 Toshio Kuratomi - 0.14.1-4 +- Let brp_python_bytecompile run again, take care of the non-python{2,3} modules + by removing them from the python{,3}-requests package that they did not belong + in. +- Use the certificates in the ca-certificates package instead of the bundled one + + https://bugzilla.redhat.com/show_bug.cgi?id=904614 +- Fix a problem with cookie handling + + https://bugzilla.redhat.com/show_bug.cgi?id=906924 + * Wed Oct 22 2012 Arun S A G 0.14.1-1 - Updated to latest upstream release diff --git a/sources b/sources index 611d373..f5403f5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -3de30600072cbc7214ae342d1d08aa46 requests-0.14.1.tar.gz +a0158815af244c32041a3147ee09abf3 requests-1.1.0.tar.gz