From 177b5797804133b630bf71990b2a0998010bc7b03e554884a732b93f3dc609d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 3 May 2024 21:00:09 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main python-httpx revision ddf5c6ccd7faa398d57e289f0824e8d8 --- .gitattributes | 23 +++ _multibuild | 3 + httpx-0.24.0.tar.gz | 3 + python-httpx.changes | 332 +++++++++++++++++++++++++++++++++++++++++++ python-httpx.spec | 117 +++++++++++++++ 5 files changed, 478 insertions(+) create mode 100644 .gitattributes create mode 100644 _multibuild create mode 100644 httpx-0.24.0.tar.gz create mode 100644 python-httpx.changes create mode 100644 python-httpx.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..fcc7b97 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/httpx-0.24.0.tar.gz b/httpx-0.24.0.tar.gz new file mode 100644 index 0000000..327f076 --- /dev/null +++ b/httpx-0.24.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21a4061ed649279bdc6188ec2c3549ac9c06d06ad3f0aa79043469475e28f346 +size 2167376 diff --git a/python-httpx.changes b/python-httpx.changes new file mode 100644 index 0000000..5c8f7ed --- /dev/null +++ b/python-httpx.changes @@ -0,0 +1,332 @@ +------------------------------------------------------------------- +Wed May 3 08:47:43 UTC 2023 - Dirk Müller + +- update to 0.24.0: + * The logging behaviour has been changed to be more in-line + with other standard Python logging usages. We no longer have + a custom `TRACE` log level, and we no longer use the + `HTTPX_LOG_LEVEL` environment variable to auto-configure + logging. We now have a significant amount of `DEBUG` logging + available at the network level. Full documentation is + available at https://www.python-httpx.org/logging/ (#2547, + encode/httpcore#648) + * The `Response.iter_lines()` method now matches the stdlib + behaviour and does not include the newline characters. It + also resolves a performance issue. (#2423) + * Query parameter encoding switches from using + for spaces and + %2F for forward slash, to instead using %20 for spaces and + treating forward slash as a safe, unescaped character. This + differs from `requests`, but is in line with browser behavior + in Chrome, Safari, and Firefox. Both options are RFC valid. + (#2543) + * NetRC authentication is no longer automatically handled, but + is instead supported by an explicit `httpx.NetRCAuth()` + authentication class. See the documentation at + https://www.python-httpx.org/advanced/#netrc-support (#2525) + * The `rfc3986` dependancy has been removed. (#2252) + +------------------------------------------------------------------- +Fri Apr 21 12:26:25 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:41:55 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Mon Jan 16 10:33:05 UTC 2023 - Daniel Garcia + +- Update to 0.23.3 + * Version 0.23.2 accidentally included stricter type checking on query + parameters. This shouldn've have been included in a minor version bump, and + is now reverted. (#2523, #2539) +- 0.23.2 (2nd Jan, 2023) + * Support digest auth nonce counting to avoid multiple auth requests. (#2463) + * Multipart file uploads where the file length cannot be determine now use + chunked transfer encoding, rather than loading the entire file into memory + in order to determine the `Content-Length`. (#2382) + * Raise `TypeError` if content is passed a dict-instance. (#2495) + * Partially revert the API breaking change in 0.23.1, which removed `RawURL`. + We continue to expose a `url.raw` property which is now a plain + named-tuple. This API is still expected to be deprecated, but we will do so + with a major version bump. (#2481) +- 0.23.1 (18th Nov, 2022) + **Note**: The 0.23.1 release should have used a proper version bump, rather + than a minor point release. There are API surface area changes + that may affect some users. See the "Removed" section of these + release notes for details. + ### Added + * Support for Python 3.11. (#2420) + * Allow setting an explicit multipart boundary in `Content-Type` header. + (#2278) + * Allow `tuple` or `list` for multipart values, not just `list`. (#2355) + * Allow `str` content for multipart upload files. (#2400) + * Support connection upgrades. See + https://www.encode.io/httpcore/extensions/#upgrade-requests + ### Fixed + * Don't drop empty query parameters. (#2354) + ### Removed + * Upload files *must* always be opened in binary mode. (#2400) + * Drop `.read`/`.aread` from `SyncByteStream`/`AsyncByteStream`. (#2407) + * Drop `RawURL`. (#2241) + +------------------------------------------------------------------- +Fri Aug 5 10:25:32 UTC 2022 - Ben Greiner + +- Drop transfer-encoding-lower-case.patch + The headers are lowercase again with uvicorn 0.18 + +------------------------------------------------------------------- +Fri Aug 5 08:30:50 UTC 2022 - Matej Cepl + +- Add transfer-encoding-lower-case.patch to fix failing tests due + to incorrect capitalization of the 'transfer-encoding' header + (gh#encode/httpx!1735). + +------------------------------------------------------------------- +Tue Jul 19 15:45:42 UTC 2022 - Ben Greiner + +- Update to 0.23.0 + * Drop support for Python 3.6. (#2097) + * Use utf-8 as the default character set, instead of falling back + to charset-normalizer for auto-detection. To enable automatic + character set detection, see the documentation. (#2165) + * Fix URL.copy_with for some oddly formed URL cases. (#2185) + * Digest authentication should use case-insensitive comparison + for determining which algorithm is being used. (#2204) + * Fix console markup escaping in command line client. (#1866) + * When files are used in multipart upload, ensure we always seek + to the start of the file. (#2065) + * Ensure that iter_bytes never yields zero-length chunks. (#2068) + * Preserve Authorization header for redirects that are to the + same origin, but are an http-to-https upgrade. (#2074) + * When responses have binary output, don't print the output to + the console in the command line client. Use output like <16086 + bytes of binary data> instead. (#2076) + * Fix display of --proxies argument in the command line client + help. (#2125) + * Close responses when task cancellations occur during stream + reading. (#2156) + * Fix type error on accessing .request on HTTPError exceptions. + (#2158) +- Drop CVE-2021-41945-copy_with-data-leak.patch fixed upstream + (bsc#1199002) + +------------------------------------------------------------------- +Mon May 2 03:01:52 UTC 2022 - Steve Kowalik + +- Add patch CVE-2021-41945-copy_with-data-leak.patch: + * Do not leak data in httpx.URL.copy_with (bsc#1199002, CVE-2021-41945) + +------------------------------------------------------------------- +Fri Feb 11 19:31:34 UTC 2022 - Michael Ströder + +- Only recommend and not require the installation of python-h2 because it is + seriously broken and prevents any other Python software to run correctly with -bb. + (See also: https://github.com/python-hyper/h2/issues/1236) + This also matches upstream's setup.py which lists h2 as optional + dependency in extra_requires. + +------------------------------------------------------------------- +Tue Feb 1 07:01:13 UTC 2022 - Steve Kowalik + +- Update to 0.22.0: + * Add support for `Client(allow_redirects=)`. (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 + +- Update to 0.18.2 + * Added + - Support for Python 3.10. (Pull #1687) + - Expose httpx.USE_CLIENT_DEFAULT, used as the default to auth + and timeout parameters in request methods. + - Support HTTP/2 "prior knowledge", using + httpx.Client(http1=False, http2=True). + * Fixed + - Clean up some cases where warnings were being issued. + - Prefer Content-Length over Transfer-Encoding: chunked for + content= cases. + +- Update to 0.18.1 + * Changed + - Update brotli support to use the brotlicffi package + - Ensure that Request(..., stream=...) does not auto-generate + any headers on the request instance. + * Fixed + - Pass through timeout=... in top-level httpx.stream() + function. + - Map httpcore transport close exceptions to httpx exceptions. + +- Add patch (submitted to upstream at gh#encode/httpx#1669) to add + a pytest marker so we can disable the tests that use the network + in %check: + * 0001-Add-a-network-pytest-mark-for-tests-that-use-the-network.patch + +------------------------------------------------------------------- +Thu Jun 3 15:15:51 UTC 2021 - Antonio Larrosa + +- Enable tests (adding some missing dependencies and disabling + test_async_proxy_close and test_sync_proxy_close since they + access the network) + +------------------------------------------------------------------- +Thu Jun 3 08:58:20 UTC 2021 - Antonio Larrosa + +- Update to 0.18.0 + * The 0.18.x release series formalises our low-level Transport + API, introducing the base classes httpx.BaseTransport and + httpx.AsyncBaseTransport. + See the "Writing custom transports" documentation and the + httpx.BaseTransport.handle_request() docstring for more + complete details on implementing custom transports. + Pull request #1522 includes a checklist of differences from + the previous httpcore transport API, for developers + implementing custom transports. + The following API changes have been issuing deprecation + warnings since 0.17.0 onwards, and are now fully deprecated... + - You should now use httpx.codes consistently instead of + httpx.StatusCodes. + - Use limits=... instead of pool_limits=.... + - Use proxies={"http://": ...} instead of proxies={"http": ...} + for scheme-specific mounting. + * Changed + - Transport instances now inherit from httpx.BaseTransport or + httpx.AsyncBaseTransport, and should implement either the + handle_request method or handle_async_request method. + (Pull #1522, #1550) + - The response.ext property and Response(ext=...) argument are + now named extensions. (Pull #1522) + - The recommendation to not use data= in favour of content= has now been escalated to a deprecation warning. + (Pull #1573) + - Drop Response(on_close=...) from API, since it was a bit of + leaking implementation detail. (Pull #1572) + - When using a client instance, cookies should always be set on + the client, rather than on a per-request basis. We prefer + enforcing a stricter API here because it provides clearer + expectations around cookie persistence, particularly when + redirects occur. (Pull #1574) + - The runtime exception httpx.ResponseClosed is now named + httpx.StreamClosed. (#1584) + - The httpx.QueryParams model now presents an immutable + interface. The is a discussion on the design and motivation + here. Use client.params = client.params.merge(...) instead of + client.params.update(...). The basic query manipulation + methods are query.set(...), query.add(...), and + query.remove(). (#1600) + * Added + - The Request and Response classes can now be serialized using + pickle. (#1579) + - Handle data={"key": [None|int|float|bool]} cases. + (Pull #1539) + - Support httpx.URL(**kwargs), for example + httpx.URL(scheme="https", host="www.example.com", path="/'), + or httpx.URL("https://www.example.com/", + username="tom@gmail.com", password="123 456"). (Pull #1601) + - Support url.copy_with(params=...). (Pull #1601) + - Add url.params parameter, returning an immutable QueryParams + instance. (Pull #1601) + - Support query manipulation methods on the URL class. These + are url.copy_set_param(), url.copy_add_param(), + url.copy_remove_param(), url.copy_merge_params(). + (Pull #1601) + - The httpx.URL class now performs port normalization, so :80 + ports are stripped from http URLs and :443 ports are stripped + from https URLs. (Pull #1603) + - The URL.host property returns unicode strings for + internationalized domain names. The URL.raw_host property + returns byte strings with IDNA escaping applied. (Pull #1590) + * Fixed + - Fix Content-Length for cases of files=... where unicode + string is used as the file content. (Pull #1537) + - Fix some cases of merging relative URLs against + Client(base_url=...). (Pull #1532) + - The request.content attribute is now always available except + for streaming content, which requires an explicit .read(). + (Pull #1583) + +- Update to v0.17.1 + * Fixed + - Type annotation on CertTypes allows keyfile and password to + be optional. (Pull #1503) + - Fix httpcore pinned version. (Pull #1495) + +- Update to v0.17.0 + * Added + - Add httpx.MockTransport(), allowing to mock out a transport + using pre-determined responses. (Pull #1401, Pull #1449) + - Add httpx.HTTPTransport() and httpx.AsyncHTTPTransport() + default transports. (Pull #1399) + - Add mount API support, using httpx.Client(mounts=...). + (Pull #1362) + - Add chunk_size parameter to iter_raw(), iter_bytes(), + iter_text(). (Pull #1277) + - Add keepalive_expiry parameter to httpx.Limits() + configuration. (Pull #1398) + - Add repr to httpx.Cookies to display available cookies. + (Pull #1411) + - Add support for params= (previously only + params= was supported). (Pull #1426) + * Fixed + - Add missing raw_path to ASGI scope. (Pull #1357) + - Tweak create_ssl_context defaults to use trust_env=True. + (Pull #1447) + - Properly URL-escape WSGI PATH_INFO. (Pull #1391) + - Properly set default ports in WSGI transport. (Pull #1469) + - Properly encode slashes when using base_url. (Pull #1407) + - Properly map exceptions in request.aclose(). (Pull #1465) + +------------------------------------------------------------------- +Sat May 1 20:37:24 UTC 2021 - Matej Cepl + +- Don't build on python36, because of missing dependencies. + +------------------------------------------------------------------- +Sun Oct 11 14:35:52 UTC 2020 - John Vandenberg + +- Update to v0.16.1 + +------------------------------------------------------------------- +Wed Jan 8 16:39:26 UTC 2020 - John Vandenberg + +- Update to v0.10.0 + +------------------------------------------------------------------- +Tue Oct 8 08:15:47 AM UTC 2019 - John Vandenberg + +- Initial spec for v0.7.4 diff --git a/python-httpx.spec b/python-httpx.spec new file mode 100644 index 0000000..216a05d --- /dev/null +++ b/python-httpx.spec @@ -0,0 +1,117 @@ +# +# spec file +# +# Copyright (c) 2023 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif + +%{?sle15_python_module_pythons} +Name: python-httpx%{psuffix} +Version: 0.24.0 +Release: 0 +Summary: Python HTTP client with async support +License: BSD-3-Clause +URL: https://github.com/encode/httpx +Source: https://github.com/encode/httpx/archive/%{version}.tar.gz#/httpx-%{version}.tar.gz +BuildRequires: %{python_module base >= 3.7} +BuildRequires: %{python_module hatch-fancy-pypi-readme} +BuildRequires: %{python_module hatchling} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-certifi +Requires: python-httpcore >= 0.15.0 +Requires: python-idna >= 2.0 +Requires: python-sniffio +Recommends: python-Brotli +Recommends: python-Pygments >= 2 +Recommends: python-click >= 8 +Recommends: python-h2 >= 3.0 +Recommends: python-rich >= 10 +Requires(post): update-alternatives +Requires(postun):update-alternatives +BuildArch: noarch +# SECTION test requirements +%if %{with test} +BuildRequires: %{python_module Brotli} +BuildRequires: %{python_module Pygments >= 2} +BuildRequires: %{python_module chardet >= 5.0} +BuildRequires: %{python_module click >= 8} +BuildRequires: %{python_module h2 >= 3.0} +BuildRequires: %{python_module httpx = %{version}} +BuildRequires: %{python_module pytest-asyncio} +BuildRequires: %{python_module pytest-trio} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module rich >= 10} +BuildRequires: %{python_module trio} +BuildRequires: %{python_module trustme} +# uvicorn 0.18 fixed an issue in the test suite where http-headers wer not all lowercase as expected +BuildRequires: %{python_module uvicorn >= 0.18} +%endif +# /SECTION +%python_subpackages + +%description +Python HTTP client with async support. + +%prep +%autosetup -p1 -n httpx-%{version} +# remove turning pytest warnings into error +sed -i '/tool.pytest/,$ {/error/d}' setup.cfg + +%build +%pyproject_wheel + +%install +%if !%{with test} +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/httpx +%python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif + +%check +%if %{with test} +# obs builds offline +donttest="network" +# no socksio +donttest="$donttest or socks" +%pytest -vv -k "not ($donttest)" --asyncio-mode=strict +%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 +%{python_sitelib}/httpx-%{version}*-info +%endif + +%changelog