- Update to 0.22.0:

* Add support for `Client(allow_redirects=<bool>)`. (Pull #1790)
  * Add automatic character set detection, when no `charset` is included in the response `Content-Type` header. (Pull #1791)
  * Added the `httpx` command-line client.
  * Response instances now include `.is_informational`, `.is_success`, `.is_redirect`, `.is_client_error`, and `.is_server_error`
    properties for checking 1xx, 2xx, 3xx, 4xx, and 5xx response types. Note that the behaviour of `.is_redirect` is slightly different in that it now returns True for all 3xx responses, in order to allow for a consistent set of properties onto the different HTTP status code types. The `response.has_redirect_location` location may be used to determine responses with properly formed URL redirects.
  * Support for [the SOCKS5 proxy protocol](https://www.python-httpx.org/advanced/#socks) via [the `socksio` package](https://github.com/sethmlarson/socksio). (#2034)
  * Support for custom headers in multipart/form-data requests (#1936)
  * Event hooks are now also called for any additional redirect or auth requests/responses. (Pull #1806)
  * Strictly enforce that upload files must be opened in binary mode. (Pull #1736)
  * Strictly enforce that client instances can only be opened and closed once, and cannot be re-opened. (Pull #1800)
  * Drop `mode` argument from `httpx.Proxy(..., mode=...)`. (Pull #1795)
  * The `allow_redirects` flag is now `follow_redirects` and defaults to `False`.
  * The `raise_for_status()` method will now raise an exception for any responses
    except those with 2xx status codes. Previously only 4xx and 5xx status codes
    would result in an exception.
  * The low-level transport API changes to the much simpler `response = transport.handle_request(request)`.
  * The `client.send()` method no longer accepts a `timeout=...` argument, but the
    `client.build_request()` does. This required by the signature change of the
    Transport API. The request timeout configuration is now stored on the request
    instance, as `request.extensions['timeout']`.
  * `response.iter_bytes()` no longer raises a ValueError when called on a response with no content. (Pull #1827)
  * The `'wsgi.error'` configuration now defaults to `sys.stderr`, and is corrected to be a `TextIO` interface, not a `BytesIO` interface. Additionally, the WSGITransport now accepts a `wsgi_error` configuration. (Pull #1828)
  * Follow the WSGI spec by properly closing the iterable returned by the application. (Pull #1830)
  * Don't perform unreliable close/warning on `__del__` with unclosed clients. (#2026)
  * Fix `Headers.update(...)` to correctly handle repeated headers (#2038)
  * Fix streaming uploads using `SyncByteStream` or `AsyncByteStream`. Regression in 0.21.2. (#2016)
  * HTTP/2 support for tunnelled proxy cases. (#2009)
  * Improved the speed of large file uploads. (#1948)
  * The `response.url` property is now correctly annotated as `URL`, instead of `Optional[URL]`. (#1940)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-httpx?expand=0&rev=6
This commit is contained in:
Steve Kowalik 2022-02-01 07:07:59 +00:00 committed by Git OBS Bridge
parent 4e5ef9722c
commit a48e72919e
6 changed files with 80 additions and 80 deletions

View File

@ -1,64 +0,0 @@
From 55b8ee87b0e57f3dda924e3d01ee8eaa39c4aa81 Mon Sep 17 00:00:00 2001
From: Antonio Larrosa <antonio.larrosa@gmail.com>
Date: Mon, 7 Jun 2021 18:32:29 +0200
Subject: [PATCH] Add a network pytest mark for tests that use the network
Sometimes it's useful to have the tests that use the network
marked so they can be skipped easily when we know the network
is not available.
This is useful for example on SUSE and openSUSE's build servers.
When building the httpx packages (actually, any package in the
distribution) the network is disabled so we can assure
reproducible builds (among other benefits). With this mark, it's
easier to skip tests that can not succeed.
---
setup.cfg | 1 +
tests/client/test_proxies.py | 2 ++
tests/test_timeouts.py | 1 +
3 files changed, 4 insertions(+)
diff --git a/setup.cfg b/setup.cfg
index c860d819c..eb5451d96 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -18,6 +18,7 @@ combine_as_imports = True
default:::uvicorn
markers =
copied_from(source, changes=None): mark test as copied from somewhere else, along with a description of changes made to accodomate e.g. our test setup
+ network: marks tests which require network connection
[coverage:run]
omit = venv/*, httpx/_compat.py
diff --git a/tests/client/test_proxies.py b/tests/client/test_proxies.py
index 6ea4cbe40..2817d202b 100644
--- a/tests/client/test_proxies.py
+++ b/tests/client/test_proxies.py
@@ -122,6 +122,7 @@ def test_transport_for_request(url, proxies, expected):
@pytest.mark.asyncio
+@pytest.mark.network
async def test_async_proxy_close():
try:
client = httpx.AsyncClient(proxies={"https://": PROXY_URL})
@@ -130,6 +131,7 @@ async def test_async_proxy_close():
await client.aclose()
+@pytest.mark.network
def test_sync_proxy_close():
try:
client = httpx.Client(proxies={"https://": PROXY_URL})
diff --git a/tests/test_timeouts.py b/tests/test_timeouts.py
index 46a8bee8f..c7a665c3b 100644
--- a/tests/test_timeouts.py
+++ b/tests/test_timeouts.py
@@ -23,6 +23,7 @@ async def test_write_timeout(server):
@pytest.mark.usefixtures("async_environment")
+@pytest.mark.network
async def test_connect_timeout(server):
timeout = httpx.Timeout(None, connect=1e-6)

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>test</package>
</multibuild>

View File

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

3
httpx-0.22.0.tar.gz Normal file
View File

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

View File

@ -1,3 +1,40 @@
-------------------------------------------------------------------
Tue Feb 1 07:01:13 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 0.22.0:
* Add support for `Client(allow_redirects=<bool>)`. (Pull #1790)
* Add automatic character set detection, when no `charset` is included in the response `Content-Type` header. (Pull #1791)
* Added the `httpx` command-line client.
* Response instances now include `.is_informational`, `.is_success`, `.is_redirect`, `.is_client_error`, and `.is_server_error`
properties for checking 1xx, 2xx, 3xx, 4xx, and 5xx response types. Note that the behaviour of `.is_redirect` is slightly different in that it now returns True for all 3xx responses, in order to allow for a consistent set of properties onto the different HTTP status code types. The `response.has_redirect_location` location may be used to determine responses with properly formed URL redirects.
* Support for [the SOCKS5 proxy protocol](https://www.python-httpx.org/advanced/#socks) via [the `socksio` package](https://github.com/sethmlarson/socksio). (#2034)
* Support for custom headers in multipart/form-data requests (#1936)
* Event hooks are now also called for any additional redirect or auth requests/responses. (Pull #1806)
* Strictly enforce that upload files must be opened in binary mode. (Pull #1736)
* Strictly enforce that client instances can only be opened and closed once, and cannot be re-opened. (Pull #1800)
* Drop `mode` argument from `httpx.Proxy(..., mode=...)`. (Pull #1795)
* The `allow_redirects` flag is now `follow_redirects` and defaults to `False`.
* The `raise_for_status()` method will now raise an exception for any responses
except those with 2xx status codes. Previously only 4xx and 5xx status codes
would result in an exception.
* The low-level transport API changes to the much simpler `response = transport.handle_request(request)`.
* The `client.send()` method no longer accepts a `timeout=...` argument, but the
`client.build_request()` does. This required by the signature change of the
Transport API. The request timeout configuration is now stored on the request
instance, as `request.extensions['timeout']`.
* `response.iter_bytes()` no longer raises a ValueError when called on a response with no content. (Pull #1827)
* The `'wsgi.error'` configuration now defaults to `sys.stderr`, and is corrected to be a `TextIO` interface, not a `BytesIO` interface. Additionally, the WSGITransport now accepts a `wsgi_error` configuration. (Pull #1828)
* Follow the WSGI spec by properly closing the iterable returned by the application. (Pull #1830)
* Don't perform unreliable close/warning on `__del__` with unclosed clients. (#2026)
* Fix `Headers.update(...)` to correctly handle repeated headers (#2038)
* Fix streaming uploads using `SyncByteStream` or `AsyncByteStream`. Regression in 0.21.2. (#2016)
* HTTP/2 support for tunnelled proxy cases. (#2009)
* Improved the speed of large file uploads. (#1948)
* The `response.url` property is now correctly annotated as `URL`, instead of `Optional[URL]`. (#1940)
- Inject multibuild to cut down a build loop.
- Remove patch 0001-Add-a-network-pytest-mark-for-tests-that-use-the-network.patch:
* Included upstream.
-------------------------------------------------------------------
Fri Jun 18 07:56:56 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file for package python-httpx
# spec file
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,43 +16,53 @@
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%{?!python_module:%define python_module() python3-%{**}}
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
%define skip_python2 1
%define skip_python36 1
Name: python-httpx
Version: 0.18.2
Name: python-httpx%{psuffix}
Version: 0.22.0
Release: 0
Summary: Python HTTP client with async support
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/encode/httpx
Source: https://github.com/encode/httpx/archive/%{version}.tar.gz#/httpx-%{version}.tar.gz
# PATCH-FIX-UPSTREAM alarrosa@suse.com (gh#encode/httpx#1669)
Patch0: 0001-Add-a-network-pytest-mark-for-tests-that-use-the-network.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-brotlicffi
Requires: python-certifi
Requires: python-chardet >= 3.0
Requires: python-charset-normalizer >= 2.0.6
Requires: python-h11 >= 0.8.0
Requires: python-h2 >= 3.0
Requires: python-hstspreload >= 2019.8.27
Requires: python-httpcore >= 0.13.0
Requires: python-httpcore >= 0.14.0
Requires: python-idna >= 2.0
Requires: python-rfc3986 >= 1.3
Requires: python-sniffio
Requires(post): update-alternatives
Requires(postun):update-alternatives
BuildArch: noarch
# SECTION test requirements
%if %{with test}
BuildRequires: %{python_module anyio}
BuildRequires: %{python_module async_generator}
BuildRequires: %{python_module brotlicffi}
BuildRequires: %{python_module certifi}
BuildRequires: %{python_module chardet >= 3.0}
BuildRequires: %{python_module charset-normalizer >= 2.0.6}
BuildRequires: %{python_module h11 >= 0.8.0}
BuildRequires: %{python_module h2 >= 3.0}
BuildRequires: %{python_module hstspreload >= 2019.8.27}
BuildRequires: %{python_module httpcore >= 0.13.0}
BuildRequires: %{python_module httpcore >= 0.14.0}
BuildRequires: %{python_module httpx}
BuildRequires: %{python_module idna >= 2.0}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-trio}
@ -63,6 +73,7 @@ BuildRequires: %{python_module trio}
BuildRequires: %{python_module trustme}
BuildRequires: %{python_module uvicorn}
BuildRequires: %{python_module uvloop}
%endif
# /SECTION
%python_subpackages
@ -71,22 +82,35 @@ Python HTTP client with async support.
%prep
%setup -q -n httpx-%{version}
%patch0 -p1
rm setup.cfg
%build
%python_build
%install
%if !%{with test}
%python_install
%python_clone -a %{buildroot}%{_bindir}/httpx
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%check
%pytest -k 'not network'
%if %{with test}
%pytest -k 'not (network or socks or test_main or response_no_charset or test_text_decoder)'
%endif
%post
%python_install_alternative httpx
%postun
%python_uninstall_alternative httpx
%if !%{with test}
%files %{python_files}
%doc CHANGELOG.md README.md
%license LICENSE.md
%python_alternative %{_bindir}/httpx
%{python_sitelib}/httpx*
%endif
%changelog