Accepting request 939980 from home:bnavigator:branches:devel:languages:python
update (for python310) OBS-URL: https://build.opensuse.org/request/show/939980 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-aiohttp?expand=0&rev=73
This commit is contained in:
parent
18ac096873
commit
9aed91572f
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:5d84ecc73141d0a0d61ece0742bb7ff5751b0657dab8405f899d3ceb104cc7de
|
|
||||||
size 1114533
|
|
3
aiohttp-3.8.1.tar.gz
Normal file
3
aiohttp-3.8.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578
|
||||||
|
size 7324180
|
@ -1,93 +0,0 @@
|
|||||||
From d0453ed56820e32802be743bf7a7b7027f9c9589 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Sam Bull <aa6bs0@sambull.org>
|
|
||||||
Date: Sat, 14 Nov 2020 15:24:43 +0000
|
|
||||||
Subject: [PATCH 1/7] Backport fix for setting cookies
|
|
||||||
|
|
||||||
---
|
|
||||||
CHANGES/5233.bugfix | 1 +
|
|
||||||
aiohttp/web_protocol.py | 21 ++++++++++-----------
|
|
||||||
tests/test_web_exceptions.py | 28 ++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 39 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/CHANGES/5233.bugfix
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+Fix cookies disappearing from HTTPExceptions.
|
|
||||||
--- a/aiohttp/web_protocol.py
|
|
||||||
+++ b/aiohttp/web_protocol.py
|
|
||||||
@@ -423,9 +423,7 @@ class RequestHandler(BaseProtocol):
|
|
||||||
finally:
|
|
||||||
self._current_request = None
|
|
||||||
except HTTPException as exc:
|
|
||||||
- resp = Response(
|
|
||||||
- status=exc.status, reason=exc.reason, text=exc.text, headers=exc.headers
|
|
||||||
- )
|
|
||||||
+ resp = exc
|
|
||||||
reset = await self.finish_response(request, resp, start_time)
|
|
||||||
except asyncio.CancelledError:
|
|
||||||
raise
|
|
||||||
@@ -437,6 +435,15 @@ class RequestHandler(BaseProtocol):
|
|
||||||
resp = self.handle_error(request, 500, exc)
|
|
||||||
reset = await self.finish_response(request, resp, start_time)
|
|
||||||
else:
|
|
||||||
+ # Deprecation warning (See #2415)
|
|
||||||
+ if getattr(resp, "__http_exception__", False):
|
|
||||||
+ warnings.warn(
|
|
||||||
+ "returning HTTPException object is deprecated "
|
|
||||||
+ "(#2415) and will be removed, "
|
|
||||||
+ "please raise the exception instead",
|
|
||||||
+ DeprecationWarning,
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
reset = await self.finish_response(request, resp, start_time)
|
|
||||||
|
|
||||||
return resp, reset
|
|
||||||
@@ -486,14 +493,6 @@ class RequestHandler(BaseProtocol):
|
|
||||||
except (asyncio.CancelledError, ConnectionError):
|
|
||||||
self.log_debug("Ignored premature client disconnection")
|
|
||||||
break
|
|
||||||
- # Deprecation warning (See #2415)
|
|
||||||
- if getattr(resp, "__http_exception__", False):
|
|
||||||
- warnings.warn(
|
|
||||||
- "returning HTTPException object is deprecated "
|
|
||||||
- "(#2415) and will be removed, "
|
|
||||||
- "please raise the exception instead",
|
|
||||||
- DeprecationWarning,
|
|
||||||
- )
|
|
||||||
|
|
||||||
# Drop the processed task from asyncio.Task.all_tasks() early
|
|
||||||
del task
|
|
||||||
--- a/tests/test_web_exceptions.py
|
|
||||||
+++ b/tests/test_web_exceptions.py
|
|
||||||
@@ -203,3 +203,31 @@ def test_HTTPException_retains_cause() -
|
|
||||||
tb = "".join(format_exception(ei.type, ei.value, ei.tb))
|
|
||||||
assert "CustomException" in tb
|
|
||||||
assert "direct cause" in tb
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+async def test_HTTPException_retains_cookie(aiohttp_client):
|
|
||||||
+ @web.middleware
|
|
||||||
+ async def middleware(request, handler):
|
|
||||||
+ try:
|
|
||||||
+ return await handler(request)
|
|
||||||
+ except web.HTTPException as exc:
|
|
||||||
+ exc.set_cookie("foo", request["foo"])
|
|
||||||
+ raise exc
|
|
||||||
+
|
|
||||||
+ async def save(request):
|
|
||||||
+ request["foo"] = "works"
|
|
||||||
+ raise web.HTTPFound("/show")
|
|
||||||
+
|
|
||||||
+ async def show(request):
|
|
||||||
+ return web.Response(text=request.cookies["foo"])
|
|
||||||
+
|
|
||||||
+ app = web.Application(middlewares=[middleware])
|
|
||||||
+ app.router.add_route("GET", "/save", save)
|
|
||||||
+ app.router.add_route("GET", "/show", show)
|
|
||||||
+ client = await aiohttp_client(app)
|
|
||||||
+
|
|
||||||
+ resp = await client.get("/save")
|
|
||||||
+ assert resp.status == 200
|
|
||||||
+ assert str(resp.url)[-5:] == "/show"
|
|
||||||
+ text = await resp.text()
|
|
||||||
+ assert text == "works"
|
|
@ -1,3 +1,192 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Dec 11 19:18:47 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- Update to version 3.8.1
|
||||||
|
* Bugfixes
|
||||||
|
* Fix the error in handling the return value of getaddrinfo.
|
||||||
|
getaddrinfo will return an (int, bytes) tuple, if CPython could
|
||||||
|
not handle the address family. It will cause a index out of
|
||||||
|
range error in aiohttp. For example, if user compile CPython
|
||||||
|
with --disable-ipv6 option but his system enable the ipv6.
|
||||||
|
#5901
|
||||||
|
* Do not install "examples" as a top-level package. #6189
|
||||||
|
* Restored ability to connect IPv6-only host. #6195
|
||||||
|
* Remove Signal from __all__, replace aiohttp.Signal with
|
||||||
|
aiosignal.Signal in docs #6201
|
||||||
|
* Made chunked encoding HTTP header check stricter. #6305
|
||||||
|
* Improved Documentation
|
||||||
|
* update quick starter demo codes. #6240
|
||||||
|
* Added an explanation of how tiny timeouts affect performance to
|
||||||
|
the client reference document. #6274
|
||||||
|
* Add flake8-docstrings to flake8 configuration, enable subset of
|
||||||
|
checks. #6276
|
||||||
|
* Added information on running complex applications with
|
||||||
|
additional tasks/processes -- :user:`Dreamsorcerer`. #6278
|
||||||
|
- Release 3.8.0 (2021-10-31)
|
||||||
|
* Features
|
||||||
|
* Added a GunicornWebWorker feature for extending the aiohttp
|
||||||
|
server configuration by allowing the 'wsgi' coroutine to return
|
||||||
|
web.AppRunner object. #2988
|
||||||
|
* Switch from http-parser to llhttp #3561
|
||||||
|
* Use Brotli instead of brotlipy #3803
|
||||||
|
* Disable implicit switch-back to pure python mode. The build
|
||||||
|
fails loudly if aiohttp cannot be compiled with C Accelerators.
|
||||||
|
Use AIOHTTP_NO_EXTENSIONS=1 to explicitly disable C Extensions
|
||||||
|
complication and switch to Pure-Python mode. Note that
|
||||||
|
Pure-Python mode is significantly slower than compiled one.
|
||||||
|
#3828
|
||||||
|
* Make access log use local time with timezone #3853
|
||||||
|
* Implemented readuntil in StreamResponse #4054
|
||||||
|
* FileResponse now supports ETag. #4594
|
||||||
|
* Add a request handler type alias aiohttp.typedefs.Handler.
|
||||||
|
#4686
|
||||||
|
* AioHTTPTestCase is more async friendly now.
|
||||||
|
* For people who use unittest and are used to use
|
||||||
|
:py:exc:`~unittest.TestCase` it will be easier to write new
|
||||||
|
test cases like the sync version of the
|
||||||
|
:py:exc:`~unittest.TestCase` class, without using the decorator
|
||||||
|
@unittest_run_loop, just async def test_*. The only difference
|
||||||
|
is that for the people using python3.7 and below a new
|
||||||
|
dependency is needed, it is asynctestcase. #4700
|
||||||
|
* Add validation of HTTP header keys and values to prevent header
|
||||||
|
injection. #4818
|
||||||
|
* Add predicate to AbstractCookieJar.clear. Add
|
||||||
|
AbstractCookieJar.clear_domain to clean all domain and
|
||||||
|
subdomains cookies only. #4942
|
||||||
|
* Add keepalive_timeout parameter to web.run_app. #5094
|
||||||
|
* Tracing for client sent headers #5105
|
||||||
|
* Make type hints for http parser stricter #5267
|
||||||
|
* Add final declarations for constants. #5275
|
||||||
|
* Switch to external frozenlist and aiosignal libraries. #5293
|
||||||
|
* Don't send secure cookies by insecure transports.
|
||||||
|
* By default, the transport is secure if https or wss scheme is
|
||||||
|
used. Use CookieJar(treat_as_secure_origin="http://127.0.0.1")
|
||||||
|
to override the default security checker. #5571
|
||||||
|
* Always create a new event loop in aiohttp.web.run_app(). This
|
||||||
|
adds better compatibility with asyncio.run() or if trying to
|
||||||
|
run multiple apps in sequence. #5572
|
||||||
|
* Add aiohttp.pytest_plugin.AiohttpClient for static typing of
|
||||||
|
pytest plugin. #5585
|
||||||
|
* Added a socket_factory argument to BaseTestServer. #5844
|
||||||
|
* Add compression strategy parameter to enable_compression
|
||||||
|
method. #5909
|
||||||
|
* Added support for Python 3.10 to Github Actions CI/CD workflows
|
||||||
|
and fix the related deprecation warnings -- :user:`Hanaasagi`.
|
||||||
|
#5927
|
||||||
|
* Switched chardet to charset-normalizer for guessing the HTTP
|
||||||
|
payload body encoding -- :user:`Ousret`. #5930
|
||||||
|
* Added optional auto_decompress argument for HttpRequestParser
|
||||||
|
#5957
|
||||||
|
* Added support for HTTPS proxies to the extent CPython's
|
||||||
|
:py:mod:`asyncio` supports it -- by :user:`bmbouter`,
|
||||||
|
:user:`jborean93` and :user:`webknjaz`. #5992
|
||||||
|
* Added base_url parameter to the initializer of
|
||||||
|
:class:`~aiohttp.ClientSession`. #6013
|
||||||
|
* Add Trove classifier and create binary wheels for 3.10. --
|
||||||
|
:user:`hugovk`. #6079
|
||||||
|
* Started shipping platform-specific wheels with the musl tag
|
||||||
|
targeting typical Alpine Linux runtimes — :user:`asvetlov`.
|
||||||
|
#6139
|
||||||
|
* Started shipping platform-specific arm64 wheels for Apple
|
||||||
|
Silicon — :user:`asvetlov`. #6139
|
||||||
|
* Bugfixes
|
||||||
|
* Modify _drain_helper() to handle concurrent await
|
||||||
|
resp.write(...) or ws.send_json(...) calls without
|
||||||
|
race-condition. #2934
|
||||||
|
* Started using MultiLoopChildWatcher when it's available under
|
||||||
|
POSIX while setting up the test I/O loop. #3450
|
||||||
|
* Only encode content-disposition filename parameter using
|
||||||
|
percent-encoding. Other parameters are encoded to quoted-string
|
||||||
|
or RFC2231 extended parameter value. #4012
|
||||||
|
* Fixed HTTP client requests to honor no_proxy environment
|
||||||
|
variables. #4431
|
||||||
|
* Fix supporting WebSockets proxies configured via environment
|
||||||
|
variables. #4648
|
||||||
|
* Change return type on URLDispatcher to UrlMappingMatchInfo to
|
||||||
|
improve type annotations. #4748
|
||||||
|
* Ensure a cleanup context is cleaned up even when an exception
|
||||||
|
occurs during startup. #4799
|
||||||
|
* Added a new exception type for Unix socket client errors which
|
||||||
|
provides a more useful error message. #4984
|
||||||
|
* Remove Transfer-Encoding and Content-Type headers for 204 in
|
||||||
|
StreamResponse #5106
|
||||||
|
* Only depend on typing_extensions for Python <3.8 #5107
|
||||||
|
* Add ABNORMAL_CLOSURE and BAD_GATEWAY to WSCloseCode #5192
|
||||||
|
* Fix cookies disappearing from HTTPExceptions. #5233
|
||||||
|
* StaticResource prefixes no longer match URLs with a non-folder
|
||||||
|
prefix. For example routes.static('/foo', '/foo') no longer
|
||||||
|
matches the URL /foobar. Previously, this would attempt to load
|
||||||
|
the file /foo/ar. #5250
|
||||||
|
* Acquire the connection before running traces to prevent race
|
||||||
|
condition. #5259
|
||||||
|
* Add missing slots to `_RequestContextManager and
|
||||||
|
_WSRequestContextManager #5329
|
||||||
|
* Ensure sending a zero byte file does not throw an exception
|
||||||
|
(round 2) #5380
|
||||||
|
* Set "text/plain" when data is an empty string in client
|
||||||
|
requests. #5392
|
||||||
|
* Stop automatically releasing the ClientResponse object on calls
|
||||||
|
to the ok property for the failed requests. #5403
|
||||||
|
* Include query parameters from params keyword argument in
|
||||||
|
tracing URL. #5432
|
||||||
|
* Fix annotations #5466
|
||||||
|
* Fixed the multipart POST requests processing to always release
|
||||||
|
file descriptors for the tempfile.Temporaryfile-created
|
||||||
|
_io.BufferedRandom instances of files sent within multipart
|
||||||
|
request bodies via HTTP POST requests -- by :user:`webknjaz`.
|
||||||
|
#5494
|
||||||
|
* Fix 0 being incorrectly treated as an immediate timeout. #5527
|
||||||
|
* Fixes failing tests when an environment variable <scheme>_proxy
|
||||||
|
is set. #5554
|
||||||
|
* Replace deprecated app handler design in
|
||||||
|
tests/autobahn/server.py with call to web.run_app; replace
|
||||||
|
deprecated aiohttp.ws_connect calls in tests/autobahn/client.py
|
||||||
|
with aiohttp.ClienSession.ws_connect. #5606
|
||||||
|
* Fixed test for HTTPUnauthorized that access the text argument.
|
||||||
|
This is not used in any part of the code, so it's removed now.
|
||||||
|
#5657
|
||||||
|
* Remove incorrect default from docs #5727
|
||||||
|
* Remove external test dependency to http://httpbin.org #5840
|
||||||
|
* Don't cancel current task when entering a cancelled timer.
|
||||||
|
#5853
|
||||||
|
* Added params keyword argument to ClientSession.ws_connect. --
|
||||||
|
:user:`hoh`. #5868
|
||||||
|
* Uses :py:class:`~asyncio.ThreadedChildWatcher` under POSIX to
|
||||||
|
allow setting up test loop in non-main thread. #5877
|
||||||
|
* Fix the error in handling the return value of getaddrinfo.
|
||||||
|
getaddrinfo will return an (int, bytes) tuple, if CPython could
|
||||||
|
not handle the address family. It will cause a index out of
|
||||||
|
range error in aiohttp. For example, if user compile CPython
|
||||||
|
with --disable-ipv6 option but his system enable the ipv6.
|
||||||
|
#5901
|
||||||
|
* Removed the deprecated loop argument from the
|
||||||
|
asyncio.sleep/gather calls #5905
|
||||||
|
* Return None from request.if_modified_since,
|
||||||
|
request.if_unmodified_since, request.if_range and
|
||||||
|
response.last_modified when corresponding http date headers are
|
||||||
|
invalid. #5925
|
||||||
|
* Fix resetting SIGCHLD signals in Gunicorn aiohttp Worker to fix
|
||||||
|
subprocesses that capture output having an incorrect
|
||||||
|
returncode. #6130
|
||||||
|
* Raise 400: Content-Length can't be present with
|
||||||
|
Transfer-Encoding if both Content-Length and Transfer-Encoding
|
||||||
|
are sent by peer by both C and Python implementations #6182
|
||||||
|
* Improved Documentation
|
||||||
|
* Refactored OpenAPI/Swagger aiohttp addons, added aio-openapi
|
||||||
|
#5326
|
||||||
|
* Fixed docs on request cookies type, so it matches what is
|
||||||
|
actually used in the code (a read-only dictionary-like object).
|
||||||
|
#5725
|
||||||
|
* Documented that the HTTP client Authorization header is removed
|
||||||
|
on redirects to a different host or protocol. #5850
|
||||||
|
- Drop patches
|
||||||
|
* backport_fix_for_setting_cookies.patch
|
||||||
|
* remove_deprecated_loop_argument.patch
|
||||||
|
* stdlib-typing_extensions.patch
|
||||||
|
* unbundle-http-parser.patch -- replaced by llhttp, nothing else
|
||||||
|
than the bundled llhttp available.
|
||||||
|
- Disable building the docs (no sphinxcontrib-towncrier)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Nov 24 00:38:26 UTC 2021 - Steve Kowalik <steven.kowalik@suse.com>
|
Wed Nov 24 00:38:26 UTC 2021 - Steve Kowalik <steven.kowalik@suse.com>
|
||||||
|
|
||||||
|
@ -18,66 +18,62 @@
|
|||||||
|
|
||||||
%{?!python_module:%define python_module() python3-%{**}}
|
%{?!python_module:%define python_module() python3-%{**}}
|
||||||
%define skip_python2 1
|
%define skip_python2 1
|
||||||
|
# requires some unavailable modules
|
||||||
|
%bcond_with docs
|
||||||
Name: python-aiohttp
|
Name: python-aiohttp
|
||||||
Version: 3.7.4
|
Version: 3.8.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Asynchronous HTTP client/server framework
|
Summary: Asynchronous HTTP client/server framework
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/aio-libs/aiohttp
|
URL: https://github.com/aio-libs/aiohttp
|
||||||
Source: https://files.pythonhosted.org/packages/source/a/aiohttp/aiohttp-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/a/aiohttp/aiohttp-%{version}.tar.gz
|
||||||
Patch0: unbundle-http-parser.patch
|
|
||||||
# PATCH-FIX-UPSTREAM stdlib-typing_extensions.patch gh#aio-libs/aiohttp#5374 mcepl@suse.com
|
|
||||||
# Fix typing_extensions imports.
|
|
||||||
Patch1: stdlib-typing_extensions.patch
|
|
||||||
# PATCH-FIX-UPSTREAM remove_deprecated_loop_argument.patch gh#aio-libs/aiohttp#5991 mcepl@suse.com
|
|
||||||
# remove deprecated loop argument
|
|
||||||
Patch3: remove_deprecated_loop_argument.patch
|
|
||||||
# PATCH-FIX-UPSTREAM backport_fix_for_setting_cookies.patch gh#aio-libs/aiohttp#5233 mcepl@suse.com
|
|
||||||
# backport of fixes from 3.8 branch
|
|
||||||
Patch4: backport_fix_for_setting_cookies.patch
|
|
||||||
BuildRequires: %{python_module Cython}
|
BuildRequires: %{python_module Cython}
|
||||||
BuildRequires: %{python_module async_timeout >= 3.0}
|
BuildRequires: %{python_module aiosignal >= 1.1.2}
|
||||||
|
BuildRequires: %{python_module async_timeout >= 4.0}
|
||||||
|
BuildRequires: %{python_module asynctest = 0.13.0 if %python-base < 3.8}
|
||||||
BuildRequires: %{python_module attrs >= 17.3.0}
|
BuildRequires: %{python_module attrs >= 17.3.0}
|
||||||
BuildRequires: %{python_module chardet >= 2.0}
|
BuildRequires: %{python_module charset-normalizer >= 2.0}
|
||||||
BuildRequires: %{python_module devel >= 3.5.3}
|
BuildRequires: %{python_module devel >= 3.6}
|
||||||
BuildRequires: %{python_module freezegun}
|
BuildRequires: %{python_module frozenlist >= 1.1.1}
|
||||||
BuildRequires: %{python_module idna_ssl >= 1.0}
|
BuildRequires: %{python_module idna_ssl >= 1.0 if %python-base < 3.7}
|
||||||
BuildRequires: %{python_module multidict >= 4.5}
|
BuildRequires: %{python_module multidict >= 4.5}
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
BuildRequires: %{python_module typing_extensions >= 3.6.5 if %python-base < 3.8}
|
BuildRequires: %{python_module typing_extensions >= 3.7.4 if %python-base < 3.8}
|
||||||
BuildRequires: %{python_module yarl >= 1.0}
|
BuildRequires: %{python_module yarl >= 1.0}
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: http-parser-devel
|
BuildRequires: http-parser-devel
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
Requires: python >= 3.6
|
Requires: python >= 3.6
|
||||||
Requires: python-async_timeout >= 3.0
|
Requires: python-aiosignal >= 1.1.2
|
||||||
|
Requires: python-async_timeout >= 4.0
|
||||||
Requires: python-attrs >= 17.3.0
|
Requires: python-attrs >= 17.3.0
|
||||||
Requires: python-chardet >= 2.0
|
Requires: python-charset-normalizer >= 2.0
|
||||||
Requires: python-gunicorn
|
Requires: python-frozenlist >= 1.1.1
|
||||||
Requires: python-multidict >= 4.5
|
Requires: python-multidict >= 4.5
|
||||||
Requires: python-yarl >= 1.0
|
Requires: python-yarl >= 1.0
|
||||||
Requires: (python3-typing_extensions >= 3.6.5 if python3-base < 3.8)
|
Requires: (python-asynctest = 0.13.0 if python-base < 3.8)
|
||||||
|
Requires: (python-idna_ssl >= 1.0 if python-base < 3.7)
|
||||||
|
Requires: (python-typing_extensions >= 3.7.4 if python-base < 3.8)
|
||||||
Recommends: python-aiodns
|
Recommends: python-aiodns
|
||||||
Recommends: python-brotlipy
|
Recommends: python-brotlipy
|
||||||
Recommends: python-cChardet
|
Recommends: python-cChardet
|
||||||
Suggests: %{name}-doc
|
Suggests: %{name}-doc
|
||||||
%if 0%{?suse_version} < 1550 || "%{python_flavor}" == "python36"
|
|
||||||
Requires: python-idna_ssl >= 1.0
|
|
||||||
%endif
|
|
||||||
# SECTION test requirements
|
# SECTION test requirements
|
||||||
BuildRequires: %{python_module aiodns}
|
BuildRequires: %{python_module aiodns}
|
||||||
BuildRequires: %{python_module async_generator}
|
BuildRequires: %{python_module async_generator}
|
||||||
BuildRequires: %{python_module brotlipy}
|
BuildRequires: %{python_module brotlipy}
|
||||||
|
BuildRequires: %{python_module freezegun}
|
||||||
BuildRequires: %{python_module gunicorn}
|
BuildRequires: %{python_module gunicorn}
|
||||||
BuildRequires: %{python_module pluggy}
|
BuildRequires: %{python_module pluggy}
|
||||||
|
BuildRequires: %{python_module proxy.py}
|
||||||
BuildRequires: %{python_module pytest-mock}
|
BuildRequires: %{python_module pytest-mock}
|
||||||
BuildRequires: %{python_module pytest-timeout}
|
BuildRequires: %{python_module pytest-timeout}
|
||||||
BuildRequires: %{python_module pytest}
|
BuildRequires: %{python_module pytest}
|
||||||
BuildRequires: %{python_module re-assert}
|
BuildRequires: %{python_module re-assert}
|
||||||
BuildRequires: %{python_module trustme}
|
BuildRequires: %{python_module trustme}
|
||||||
|
|
||||||
# /SECTION
|
# /SECTION
|
||||||
# SECTION docs
|
# SECTION docs
|
||||||
|
%if %{with docs}
|
||||||
BuildRequires: %{python_module MarkupSafe}
|
BuildRequires: %{python_module MarkupSafe}
|
||||||
BuildRequires: python3-Pygments >= 2.1
|
BuildRequires: python3-Pygments >= 2.1
|
||||||
BuildRequires: python3-Sphinx
|
BuildRequires: python3-Sphinx
|
||||||
@ -85,6 +81,8 @@ BuildRequires: python3-aiohttp-theme
|
|||||||
BuildRequires: python3-sphinxcontrib-asyncio
|
BuildRequires: python3-sphinxcontrib-asyncio
|
||||||
BuildRequires: python3-sphinxcontrib-blockdiag
|
BuildRequires: python3-sphinxcontrib-blockdiag
|
||||||
BuildRequires: python3-sphinxcontrib-newsfeed
|
BuildRequires: python3-sphinxcontrib-newsfeed
|
||||||
|
BuildRequires: python3-sphinxcontrib-towncrier
|
||||||
|
%endif
|
||||||
# /SECTION
|
# /SECTION
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
|
|
||||||
@ -104,20 +102,18 @@ HTML documentation on the API and examples for %{name}.
|
|||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n aiohttp-%{version}
|
%autosetup -p1 -n aiohttp-%{version}
|
||||||
|
|
||||||
# Prevent building with vendor version
|
# don't check coverage
|
||||||
rm vendor/http-parser/*.c
|
sed -i '/--cov/d' setup.cfg
|
||||||
|
|
||||||
# Allow use with chardet v4
|
|
||||||
# https://github.com/aio-libs/aiohttp/pull/5333
|
|
||||||
sed -i 's/chardet>=2.0,<4.0/chardet>=2.0/' setup.py
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="%{optflags}"
|
export CFLAGS="%{optflags}"
|
||||||
%python_build
|
%python_build
|
||||||
|
%if %{with docs}
|
||||||
pushd docs
|
pushd docs
|
||||||
%make_build html
|
%make_build html
|
||||||
rm _build/html/.buildinfo
|
rm _build/html/.buildinfo
|
||||||
popd
|
popd
|
||||||
|
%endif
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%python_install
|
%python_install
|
||||||
@ -127,16 +123,16 @@ rm -r %{buildroot}%{$python_sitearch}/aiohttp/.hash
|
|||||||
}
|
}
|
||||||
|
|
||||||
%check
|
%check
|
||||||
# ignore setup.cfg
|
donttest="test_aiohttp_request_coroutine or test_mark_formdata_as_processed or test_aiohttp_plugin_async"
|
||||||
touch pytest.ini
|
python36_donttest=" or test_read_boundary_with_incomplete_chunk"
|
||||||
%define skiptest_allflavors test_aiohttp_request_coroutine or test_mark_formdata_as_processed or test_aiohttp_plugin_async
|
# no name resolution
|
||||||
# we need it to be defined for all flavors for expansion inside pytest_arch to work. %%{?...} would expand too early.
|
donttest+=" or test_client_session_timeout_zero or test_requote_redirect_url_default"
|
||||||
%{lua: for p in string.gmatch(rpm.expand("%pythons"), "%S+") do rpm.define("skiptest_" .. p .. "_only %{nil}") end}
|
# flaky
|
||||||
|
donttest+=" or test_https_proxy_unsupported_tls_in_tls"
|
||||||
%if 0%{?python3_version_nodots} == 36
|
%if 0%{?python3_version_nodots} == 36
|
||||||
%define skiptest_python3_only or test_read_boundary_with_incomplete_chunk
|
donttest+="$python36_donttest"
|
||||||
%endif
|
%endif
|
||||||
%define skiptest_python36_only or test_read_boundary_with_incomplete_chunk
|
%pytest_arch --ignore ./aiohttp -rsEf -k "not ($donttest ${$python_donttest})"
|
||||||
%pytest_arch --ignore ./aiohttp -rs -k 'not (%{skiptest_allflavors} %{skiptest_$python_only})'
|
|
||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE.txt
|
%license LICENSE.txt
|
||||||
@ -144,7 +140,9 @@ touch pytest.ini
|
|||||||
%{python_sitearch}/aiohttp
|
%{python_sitearch}/aiohttp
|
||||||
%{python_sitearch}/aiohttp-%{version}*-info
|
%{python_sitearch}/aiohttp-%{version}*-info
|
||||||
|
|
||||||
|
%if %{with docs}
|
||||||
%files -n %{name}-doc
|
%files -n %{name}-doc
|
||||||
%doc docs/_build/html
|
%doc docs/_build/html
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
From dd3a89130b5769218550159ebbab9e28d8b974a3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hanaasagi <ambiguous404@gmail.com>
|
|
||||||
Date: Tue, 3 Aug 2021 11:53:45 +0000
|
|
||||||
Subject: [PATCH] fix: remove deprecated loop argument for asnycio.sleep/gather
|
|
||||||
calls
|
|
||||||
|
|
||||||
---
|
|
||||||
CHANGES/5905.bugfix | 1 +
|
|
||||||
aiohttp/web.py | 4 +---
|
|
||||||
tests/test_locks.py | 6 +++---
|
|
||||||
3 files changed, 5 insertions(+), 6 deletions(-)
|
|
||||||
create mode 100644 CHANGES/5905.bugfix
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/CHANGES/5905.bugfix
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+remove deprecated loop argument for asnycio.sleep/gather calls
|
|
||||||
--- a/aiohttp/web.py
|
|
||||||
+++ b/aiohttp/web.py
|
|
||||||
@@ -440,9 +440,7 @@ def _cancel_tasks(
|
|
||||||
for task in to_cancel:
|
|
||||||
task.cancel()
|
|
||||||
|
|
||||||
- loop.run_until_complete(
|
|
||||||
- asyncio.gather(*to_cancel, loop=loop, return_exceptions=True)
|
|
||||||
- )
|
|
||||||
+ loop.run_until_complete(asyncio.gather(*to_cancel, return_exceptions=True))
|
|
||||||
|
|
||||||
for task in to_cancel:
|
|
||||||
if task.cancelled():
|
|
||||||
--- a/tests/test_locks.py
|
|
||||||
+++ b/tests/test_locks.py
|
|
||||||
@@ -18,7 +18,7 @@ class TestEventResultOrError:
|
|
||||||
return 1
|
|
||||||
|
|
||||||
t = loop.create_task(c())
|
|
||||||
- await asyncio.sleep(0, loop=loop)
|
|
||||||
+ await asyncio.sleep(0)
|
|
||||||
e = Exception()
|
|
||||||
ev.set(exc=e)
|
|
||||||
assert (await t) == e
|
|
||||||
@@ -31,7 +31,7 @@ class TestEventResultOrError:
|
|
||||||
return 1
|
|
||||||
|
|
||||||
t = loop.create_task(c())
|
|
||||||
- await asyncio.sleep(0, loop=loop)
|
|
||||||
+ await asyncio.sleep(0)
|
|
||||||
ev.set()
|
|
||||||
assert (await t) == 1
|
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ class TestEventResultOrError:
|
|
||||||
|
|
||||||
t1 = loop.create_task(c())
|
|
||||||
t2 = loop.create_task(c())
|
|
||||||
- await asyncio.sleep(0, loop=loop)
|
|
||||||
+ await asyncio.sleep(0)
|
|
||||||
ev.cancel()
|
|
||||||
ev.set()
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
aiohttp/helpers.py | 5 ++++-
|
|
||||||
aiohttp/tracing.py | 5 ++++-
|
|
||||||
aiohttp/web_urldispatcher.py | 5 ++++-
|
|
||||||
setup.py | 2 +-
|
|
||||||
4 files changed, 13 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
--- a/aiohttp/helpers.py
|
|
||||||
+++ b/aiohttp/helpers.py
|
|
||||||
@@ -45,7 +45,10 @@ from urllib.request import getproxies
|
|
||||||
import async_timeout
|
|
||||||
import attr
|
|
||||||
from multidict import MultiDict, MultiDictProxy
|
|
||||||
-from typing_extensions import Protocol
|
|
||||||
+try:
|
|
||||||
+ from typing import Protocol
|
|
||||||
+except (ImportError, ModuleNotFoundError):
|
|
||||||
+ from typing_extensions import Protocol
|
|
||||||
from yarl import URL
|
|
||||||
|
|
||||||
from . import hdrs
|
|
||||||
--- a/aiohttp/tracing.py
|
|
||||||
+++ b/aiohttp/tracing.py
|
|
||||||
@@ -9,7 +9,10 @@ from .client_reqrep import ClientRespons
|
|
||||||
from .signals import Signal
|
|
||||||
|
|
||||||
if TYPE_CHECKING: # pragma: no cover
|
|
||||||
- from typing_extensions import Protocol
|
|
||||||
+ try:
|
|
||||||
+ from typing import Protocol
|
|
||||||
+ except (ImportError, ModuleNotFoundError):
|
|
||||||
+ from typing_extensions import Protocol
|
|
||||||
|
|
||||||
from .client import ClientSession
|
|
||||||
|
|
||||||
--- a/aiohttp/web_urldispatcher.py
|
|
||||||
+++ b/aiohttp/web_urldispatcher.py
|
|
||||||
@@ -33,7 +33,10 @@ from typing import (
|
|
||||||
cast,
|
|
||||||
)
|
|
||||||
|
|
||||||
-from typing_extensions import TypedDict
|
|
||||||
+try:
|
|
||||||
+ from typing import TypedDict
|
|
||||||
+except (ImportError, ModuleNotFoundError):
|
|
||||||
+ from typing_extensions import TypedDict
|
|
||||||
from yarl import URL, __version__ as yarl_version # type: ignore
|
|
||||||
|
|
||||||
from . import hdrs
|
|
||||||
--- a/setup.py
|
|
||||||
+++ b/setup.py
|
|
||||||
@@ -70,7 +70,7 @@ install_requires = [
|
|
||||||
"async_timeout>=3.0,<4.0",
|
|
||||||
"yarl>=1.0,<2.0",
|
|
||||||
'idna-ssl>=1.0; python_version<"3.7"',
|
|
||||||
- "typing_extensions>=3.6.5",
|
|
||||||
+ 'typing_extensions>=3.7.4; python_version<"3.8"',
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
Index: aiohttp-3.7.2/aiohttp/_cparser.pxd
|
|
||||||
===================================================================
|
|
||||||
--- aiohttp-3.7.2.orig/aiohttp/_cparser.pxd
|
|
||||||
+++ aiohttp-3.7.2/aiohttp/_cparser.pxd
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
from libc.stdint cimport uint16_t, uint32_t, uint64_t
|
|
||||||
|
|
||||||
|
|
||||||
-cdef extern from "../vendor/http-parser/http_parser.h":
|
|
||||||
+cdef extern from "http_parser.h":
|
|
||||||
ctypedef int (*http_data_cb) (http_parser*,
|
|
||||||
const char *at,
|
|
||||||
size_t length) except -1
|
|
||||||
Index: aiohttp-3.7.2/setup.py
|
|
||||||
===================================================================
|
|
||||||
--- aiohttp-3.7.2.orig/setup.py
|
|
||||||
+++ aiohttp-3.7.2/setup.py
|
|
||||||
@@ -27,7 +27,6 @@ extensions = [
|
|
||||||
"aiohttp._http_parser",
|
|
||||||
[
|
|
||||||
"aiohttp/_http_parser.c",
|
|
||||||
- "vendor/http-parser/http_parser.c",
|
|
||||||
"aiohttp/_find_header.c",
|
|
||||||
],
|
|
||||||
define_macros=[("HTTP_PARSER_STRICT", 0)],
|
|
Loading…
x
Reference in New Issue
Block a user