- 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:
parent
4e5ef9722c
commit
a48e72919e
@ -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
3
_multibuild
Normal file
@ -0,0 +1,3 @@
|
||||
<multibuild>
|
||||
<package>test</package>
|
||||
</multibuild>
|
@ -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
3
httpx-0.22.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d6727a0c9a9bd762c051f546dd92682c1dbccd7c743e768e49bef53fb844a30d
|
||||
size 2157682
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user