diff --git a/aiohttp-3.4.4.tar.gz b/aiohttp-3.4.4.tar.gz deleted file mode 100644 index 87f616b..0000000 --- a/aiohttp-3.4.4.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:51afec6ffa50a9da4cdef188971a802beb1ca8e8edb40fa429e5e529db3475fa -size 822110 diff --git a/aiohttp-3.5.4.tar.gz b/aiohttp-3.5.4.tar.gz new file mode 100644 index 0000000..3df8763 --- /dev/null +++ b/aiohttp-3.5.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c4c83f4fa1938377da32bc2d59379025ceeee8e24b89f72fcbccd8ca22dc9bf +size 1097647 diff --git a/invalid-escapes-in-tests.patch b/invalid-escapes-in-tests.patch deleted file mode 100644 index 17036cb..0000000 --- a/invalid-escapes-in-tests.patch +++ /dev/null @@ -1,98 +0,0 @@ ---- a/tests/test_http_parser.py -+++ b/tests/test_http_parser.py -@@ -369,7 +369,7 @@ def test_max_header_field_size(parser, s - name = b't' * size - text = (b'GET /test HTTP/1.1\r\n' + name + b':data\r\n\r\n') - -- match = ("400, message='Got more than 8190 bytes \({}\) when reading" -+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading" - .format(size)) - with pytest.raises(http_exceptions.LineTooLong, match=match): - parser.feed_data(text) -@@ -399,7 +399,7 @@ def test_max_header_value_size(parser, s - text = (b'GET /test HTTP/1.1\r\n' - b'data:' + name + b'\r\n\r\n') - -- match = ("400, message='Got more than 8190 bytes \({}\) when reading" -+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading" - .format(size)) - with pytest.raises(http_exceptions.LineTooLong, match=match): - parser.feed_data(text) -@@ -430,7 +430,7 @@ def test_max_header_value_size_continuat - text = (b'GET /test HTTP/1.1\r\n' - b'data: test\r\n ' + name + b'\r\n\r\n') - -- match = ("400, message='Got more than 8190 bytes \({}\) when reading" -+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading" - .format(size)) - with pytest.raises(http_exceptions.LineTooLong, match=match): - parser.feed_data(text) -@@ -551,7 +551,7 @@ def test_http_request_parser_bad_version - @pytest.mark.parametrize('size', [40965, 8191]) - def test_http_request_max_status_line(parser, size): - path = b't' * (size - 5) -- match = ("400, message='Got more than 8190 bytes \({}\) when reading" -+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading" - .format(size)) - with pytest.raises(http_exceptions.LineTooLong, match=match): - parser.feed_data( -@@ -595,7 +595,7 @@ def test_http_response_parser_utf8(respo - @pytest.mark.parametrize('size', [40962, 8191]) - def test_http_response_parser_bad_status_line_too_long(response, size): - reason = b't' * (size - 2) -- match = ("400, message='Got more than 8190 bytes \({}\) when reading" -+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading" - .format(size)) - with pytest.raises(http_exceptions.LineTooLong, match=match): - response.feed_data( ---- a/tests/test_streams.py -+++ b/tests/test_streams.py -@@ -721,7 +721,7 @@ class TestStreamReader: - async def test___repr__waiter(self, loop): - stream = self._make_one() - stream._waiter = loop.create_future() -- assert re.search(">", -+ assert re.search(r">", - repr(stream)) - stream._waiter.set_result(None) - await stream._waiter ---- a/tests/test_urldispatch.py -+++ b/tests/test_urldispatch.py -@@ -586,7 +586,7 @@ def test_add_route_with_invalid_re(route - - def test_route_dynamic_with_regex_spec(router): - handler = make_handler() -- route = router.add_route('GET', '/get/{num:^\d+}', handler, -+ route = router.add_route('GET', r'/get/{num:^\d+}', handler, - name='name') - - url = route.url_for(num='123') -@@ -595,7 +595,7 @@ def test_route_dynamic_with_regex_spec(r - - def test_route_dynamic_with_regex_spec_and_trailing_slash(router): - handler = make_handler() -- route = router.add_route('GET', '/get/{num:^\d+}/', handler, -+ route = router.add_route('GET', r'/get/{num:^\d+}/', handler, - name='name') - - url = route.url_for(num='123') -@@ -1125,7 +1125,7 @@ def test_plain_resource_canonical(): - def test_dynamic_resource_canonical(): - canonicals = { - '/get/{name}': '/get/{name}', -- '/get/{num:^\d+}': '/get/{num}', -+ r'/get/{num:^\d+}': '/get/{num}', - r'/handler/{to:\d+}': r'/handler/{to}', - r'/{one}/{two:.+}': r'/{one}/{two}', - } ---- a/tests/test_web_request.py -+++ b/tests/test_web_request.py -@@ -340,7 +340,7 @@ def test_single_forwarded_header_multipl - - - def test_single_forwarded_header_quoted_escaped(): -- header = 'BY=identifier;pROTO="\lala lan\d\~ 123\!&"' -+ header = r'BY=identifier;pROTO="\lala lan\d\~ 123\!&"' - req = make_mocked_request('GET', '/', - headers=CIMultiDict({'Forwarded': header})) - assert req.forwarded[0]['by'] == 'identifier' diff --git a/python-aiohttp.changes b/python-aiohttp.changes index 88ddafa..fd29512 100644 --- a/python-aiohttp.changes +++ b/python-aiohttp.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Feb 27 14:25:09 UTC 2019 - Ondřej Súkup + +- update to 3.5.4 +- drop invalid-escapes-in-tests.patch and rename-request-fixture.patch + * big list of changes from 3.4.4 - https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst + ------------------------------------------------------------------- Tue Jan 15 13:15:30 UTC 2019 - Alberto Planas Dominguez diff --git a/python-aiohttp.spec b/python-aiohttp.spec index a4ceeb7..9241bb6 100644 --- a/python-aiohttp.spec +++ b/python-aiohttp.spec @@ -19,19 +19,13 @@ %{?!python_module:%define python_module() python3-%{**}} %define skip_python2 1 Name: python-aiohttp -Version: 3.4.4 +Version: 3.5.4 Release: 0 Summary: Asynchronous HTTP client/server framework License: Apache-2.0 Group: Development/Languages/Python URL: https://github.com/aio-libs/aiohttp Source: https://files.pythonhosted.org/packages/source/a/aiohttp/aiohttp-%{version}.tar.gz -# PATCH-FIX-UPSTREAM mcepl@suse.com -- Fix failing tests due to invalid escapes in regexps -# https://github.com/aio-libs/aiohttp/issues/3325 -Patch0: invalid-escapes-in-tests.patch -# PATCH-FIX-UPSTREAM glaubitz@suse.com -- Fix failing test due to naming conflict with pytest fixtures -# https://github.com/aio-libs/aiohttp/issues/3392 -Patch1: rename-request-fixture.patch BuildRequires: %{python_module Cython} BuildRequires: %{python_module devel >= 3.5.3} BuildRequires: %{python_module setuptools} @@ -43,7 +37,6 @@ Requires: python-attrs >= 17.3.0 Requires: python-brotlipy Requires: python-chardet >= 2.0 Requires: python-gunicorn -Requires: python-idna_ssl >= 1.0.0 Requires: python-multidict >= 4.0 Requires: python-yarl >= 1.0 Recommends: python-aiodns @@ -56,13 +49,15 @@ BuildRequires: %{python_module attrs >= 17.3.0} BuildRequires: %{python_module brotlipy} BuildRequires: %{python_module chardet >= 2.0} BuildRequires: %{python_module gunicorn} -BuildRequires: %{python_module idna_ssl >= 1.0.0} BuildRequires: %{python_module multidict >= 4.0} BuildRequires: %{python_module pluggy} +BuildRequires: %{python_module pytest-cov} BuildRequires: %{python_module pytest-mock} BuildRequires: %{python_module pytest-runner} BuildRequires: %{python_module pytest-timeout} +BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} +BuildRequires: %{python_module trustme} BuildRequires: %{python_module yarl >= 1.0} # /SECTION # SECTION docs @@ -92,7 +87,6 @@ HTML documentation on the API and examples for %{name}. %prep %setup -q -n aiohttp-%{version} -%autopatch -p1 %build export CFLAGS="%{optflags}" @@ -109,7 +103,6 @@ find %{buildroot}%{$python_sitearch} -name "*.c" -delete } %check -rm tests/test_pytest_plugin.py %python_exec setup.py test %files %{python_files} diff --git a/rename-request-fixture.patch b/rename-request-fixture.patch deleted file mode 100644 index 8c686f5..0000000 --- a/rename-request-fixture.patch +++ /dev/null @@ -1,165 +0,0 @@ -diff -Nru aiohttp-3.4.4.orig/aiohttp/web_response.py aiohttp-3.4.4/aiohttp/web_response.py ---- aiohttp-3.4.4.orig/aiohttp/web_response.py 2018-09-05 09:40:54.000000000 +0200 -+++ aiohttp-3.4.4/aiohttp/web_response.py 2018-11-20 13:49:49.197173589 +0100 -@@ -279,27 +279,27 @@ - # remove the header - self._headers.popall(hdrs.CONTENT_LENGTH, None) - -- def _start_compression(self, request): -+ def _start_compression(self, mock_request): - if self._compression_force: - self._do_start_compression(self._compression_force) - else: -- accept_encoding = request.headers.get( -+ accept_encoding = mock_request.headers.get( - hdrs.ACCEPT_ENCODING, '').lower() - for coding in ContentCoding: - if coding.value in accept_encoding: - self._do_start_compression(coding) - return - -- async def prepare(self, request): -+ async def prepare(self, mock_request): - if self._eof_sent: - return - if self._payload_writer is not None: - return self._payload_writer - -- await request._prepare_hook(self) -- return await self._start(request) -+ await mock_request._prepare_hook(self) -+ return await self._start(mock_request) - -- async def _start(self, request, -+ async def _start(self, mock_request, - HttpVersion10=HttpVersion10, - HttpVersion11=HttpVersion11, - CONNECTION=hdrs.CONNECTION, -@@ -310,15 +310,15 @@ - SET_COOKIE=hdrs.SET_COOKIE, - SERVER_SOFTWARE=SERVER_SOFTWARE, - TRANSFER_ENCODING=hdrs.TRANSFER_ENCODING): -- self._req = request -+ self._req = mock_request - - keep_alive = self._keep_alive - if keep_alive is None: -- keep_alive = request.keep_alive -+ keep_alive = mock_request.keep_alive - self._keep_alive = keep_alive - -- version = request.version -- writer = self._payload_writer = request._payload_writer -+ version = mock_request.version -+ writer = self._payload_writer = mock_request._payload_writer - - headers = self._headers - for cookie in self._cookies.values(): -@@ -326,13 +326,13 @@ - headers.add(SET_COOKIE, value) - - if self._compression: -- self._start_compression(request) -+ self._start_compression(mock_request) - - if self._chunked: - if version != HttpVersion11: - raise RuntimeError( - "Using chunked encoding is forbidden " -- "for HTTP/{0.major}.{0.minor}".format(request.version)) -+ "for HTTP/{0.major}.{0.minor}".format(mock_request.version)) - writer.enable_chunking() - headers[TRANSFER_ENCODING] = 'chunked' - if CONTENT_LENGTH in headers: -@@ -597,7 +597,7 @@ - else: - await super().write_eof() - -- async def _start(self, request): -+ async def _start(self, mock_request): - if not self._chunked and hdrs.CONTENT_LENGTH not in self._headers: - if not self._body_payload: - if self._body is not None: -@@ -605,7 +605,7 @@ - else: - self._headers[hdrs.CONTENT_LENGTH] = '0' - -- return await super()._start(request) -+ return await super()._start(mock_request) - - def _do_start_compression(self, coding): - if self._body_payload or self._chunked: -diff -Nru aiohttp-3.4.4.orig/tests/test_client_connection.py aiohttp-3.4.4/tests/test_client_connection.py ---- aiohttp-3.4.4.orig/tests/test_client_connection.py 2018-09-05 09:40:55.000000000 +0200 -+++ aiohttp-3.4.4/tests/test_client_connection.py 2018-11-20 13:38:21.602987474 +0100 -@@ -12,7 +12,7 @@ - - - @pytest.fixture --def request(): -+def mock_request(): - return mock.Mock() - - -diff -Nru aiohttp-3.4.4.orig/tests/test_web_exceptions.py aiohttp-3.4.4/tests/test_web_exceptions.py ---- aiohttp-3.4.4.orig/tests/test_web_exceptions.py 2018-09-05 09:40:55.000000000 +0200 -+++ aiohttp-3.4.4/tests/test_web_exceptions.py 2018-11-20 14:04:51.565410583 +0100 -@@ -15,7 +15,7 @@ - - - @pytest.fixture --def request(buf): -+def mock_request(buf): - method = 'GET' - path = '/' - writer = mock.Mock() -@@ -54,9 +54,9 @@ - assert name in web.__all__ - - --async def test_HTTPOk(buf, request): -+async def test_HTTPOk(buf, mock_request): - resp = web.HTTPOk() -- await resp.prepare(request) -+ await resp.prepare(mock_request) - await resp.write_eof() - txt = buf.decode('utf8') - assert re.match(('HTTP/1.1 200 OK\r\n' -@@ -87,11 +87,11 @@ - assert 1 == codes.most_common(1)[0][1] - - --async def test_HTTPFound(buf, request): -+async def test_HTTPFound(buf, mock_request): - resp = web.HTTPFound(location='/redirect') - assert '/redirect' == resp.location - assert '/redirect' == resp.headers['location'] -- await resp.prepare(request) -+ await resp.prepare(mock_request) - await resp.write_eof() - txt = buf.decode('utf8') - assert re.match('HTTP/1.1 302 Found\r\n' -@@ -111,12 +111,12 @@ - web.HTTPFound(location=None) - - --async def test_HTTPMethodNotAllowed(buf, request): -+async def test_HTTPMethodNotAllowed(buf, mock_request): - resp = web.HTTPMethodNotAllowed('get', ['POST', 'PUT']) - assert 'GET' == resp.method - assert ['POST', 'PUT'] == resp.allowed_methods - assert 'POST,PUT' == resp.headers['allow'] -- await resp.prepare(request) -+ await resp.prepare(mock_request) - await resp.write_eof() - txt = buf.decode('utf8') - assert re.match('HTTP/1.1 405 Method Not Allowed\r\n' -@@ -168,7 +168,7 @@ - resp.body is None - - --def test_link_header_451(buf, request): -+def test_link_header_451(buf, mock_request): - resp = web.HTTPUnavailableForLegalReasons(link='http://warning.or.kr/') - - assert 'http://warning.or.kr/' == resp.link