From 85cc57ade5df7b7af3f3ac42b217c0a7f57f59da98606214c6f4c522c9500262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Tue, 22 Apr 2025 06:39:17 +0000 Subject: [PATCH] - Update to 4.12.0 * Optimize packet parsing to avoid unnecessary calls to JSON parser (#399) * Pass `environ` as a second argument to callable option `cors_allowed_origins` #398) OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-python-engineio?expand=0&rev=22 --- .gitattributes | 23 ++++++ .gitignore | 1 + python-311.patch | 54 +++++++++++++ python-engineio-4.10.1.tar.gz | 3 + python-engineio-4.11.2.tar.gz | 3 + python-engineio-4.12.0.tar.gz | 3 + python-engineio-4.3.4.tar.gz | 3 + python-engineio-4.8.0.tar.gz | 3 + python-python-engineio.changes | 140 +++++++++++++++++++++++++++++++++ python-python-engineio.spec | 74 +++++++++++++++++ 10 files changed, 307 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 python-311.patch create mode 100644 python-engineio-4.10.1.tar.gz create mode 100644 python-engineio-4.11.2.tar.gz create mode 100644 python-engineio-4.12.0.tar.gz create mode 100644 python-engineio-4.3.4.tar.gz create mode 100644 python-engineio-4.8.0.tar.gz create mode 100644 python-python-engineio.changes create mode 100644 python-python-engineio.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/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/python-311.patch b/python-311.patch new file mode 100644 index 0000000..0ad4f76 --- /dev/null +++ b/python-311.patch @@ -0,0 +1,54 @@ +diff --git a/tests/asyncio/test_asyncio_server.py b/tests/asyncio/test_asyncio_server.py +index 47b3e6e..a55e1e0 100644 +--- a/tests/asyncio/test_asyncio_server.py ++++ b/tests/asyncio/test_asyncio_server.py +@@ -278,9 +278,9 @@ def test_connect_custom_ping_times(self, import_module): + assert packets[0].data['pingTimeout'] == 123000 + assert packets[0].data['pingInterval'] == 456000 + +- @mock.patch('engineio.asyncio_socket.AsyncSocket') + @mock.patch('importlib.import_module') +- def test_connect_bad_poll(self, import_module, AsyncSocket): ++ @mock.patch('engineio.asyncio_server.asyncio_socket.AsyncSocket') ++ def test_connect_bad_poll(self, AsyncSocket, import_module): + a = self.get_async_mock() + import_module.side_effect = [a] + AsyncSocket.return_value = self._get_mock_socket() +@@ -290,9 +290,9 @@ def test_connect_bad_poll(self, import_module, AsyncSocket): + assert a._async['make_response'].call_count == 1 + assert a._async['make_response'].call_args[0][0] == '400 BAD REQUEST' + +- @mock.patch('engineio.asyncio_socket.AsyncSocket') + @mock.patch('importlib.import_module') +- def test_connect_transport_websocket(self, import_module, AsyncSocket): ++ @mock.patch('engineio.asyncio_server.asyncio_socket.AsyncSocket') ++ def test_connect_transport_websocket(self, AsyncSocket, import_module): + a = self.get_async_mock( + { + 'REQUEST_METHOD': 'GET', +@@ -312,9 +312,9 @@ def test_connect_transport_websocket(self, import_module, AsyncSocket): + == packet.OPEN + ) + +- @mock.patch('engineio.asyncio_socket.AsyncSocket') + @mock.patch('importlib.import_module') +- def test_http_upgrade_case_insensitive(self, import_module, AsyncSocket): ++ @mock.patch('engineio.asyncio_server.asyncio_socket.AsyncSocket') ++ def test_http_upgrade_case_insensitive(self, AsyncSocket, import_module): + a = self.get_async_mock( + { + 'REQUEST_METHOD': 'GET', +@@ -334,11 +334,10 @@ def test_http_upgrade_case_insensitive(self, import_module, AsyncSocket): + == packet.OPEN + ) + +- @mock.patch('engineio.asyncio_socket.AsyncSocket') + @mock.patch('importlib.import_module') ++ @mock.patch('engineio.asyncio_server.asyncio_socket.AsyncSocket') + def test_connect_transport_websocket_closed( +- self, import_module, AsyncSocket +- ): ++ self, AsyncSocket, import_module): + a = self.get_async_mock( + { + 'REQUEST_METHOD': 'GET', diff --git a/python-engineio-4.10.1.tar.gz b/python-engineio-4.10.1.tar.gz new file mode 100644 index 0000000..3e55d42 --- /dev/null +++ b/python-engineio-4.10.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f087b42d58dba827ddfb40f3b08b2ecc7543d1ab5a9e07f25b1a577e9d0692e +size 317153 diff --git a/python-engineio-4.11.2.tar.gz b/python-engineio-4.11.2.tar.gz new file mode 100644 index 0000000..029670e --- /dev/null +++ b/python-engineio-4.11.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d2444d8d70ef841c1101e9d3ca7f9b3567c620744b77cfeed149346b07a33e7 +size 319497 diff --git a/python-engineio-4.12.0.tar.gz b/python-engineio-4.12.0.tar.gz new file mode 100644 index 0000000..81d90c5 --- /dev/null +++ b/python-engineio-4.12.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ccc0d15535ad82ed03aeff022f31d450ab1eaa9d2108ecb1c4647d587514be9 +size 319601 diff --git a/python-engineio-4.3.4.tar.gz b/python-engineio-4.3.4.tar.gz new file mode 100644 index 0000000..c84e968 --- /dev/null +++ b/python-engineio-4.3.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f6ff1c3b3463a453b8eafa7a81f1dd52bd1728bf524988f9ab99b71c31a8d8e +size 300665 diff --git a/python-engineio-4.8.0.tar.gz b/python-engineio-4.8.0.tar.gz new file mode 100644 index 0000000..d328ece --- /dev/null +++ b/python-engineio-4.8.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a32585d8fecd0118264fe0c39788670456ca9aa466d7c026d995cfff68af164 +size 88626 diff --git a/python-python-engineio.changes b/python-python-engineio.changes new file mode 100644 index 0000000..b25b2e8 --- /dev/null +++ b/python-python-engineio.changes @@ -0,0 +1,140 @@ +------------------------------------------------------------------- +Wed Apr 16 10:52:22 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 4.12.0 + * Optimize packet parsing to avoid unnecessary calls to + JSON parser (#399) + * Pass `environ` as a second argument to callable option + `cors_allowed_origins` #398) + +------------------------------------------------------------------- +Sun Mar 23 17:44:26 UTC 2025 - Axel Braun + +- version 4,11,2 + * Fix incorrect disconnection reason reported when browser page is closed (commit) + * Remove debugging prints :blush: (commit) + * Pass a reason argument to the disconnect handler #393 (commit) + * Add maxPayload to connection response #392 (commit) (thanks HeySMMReseller & HeySMMProvider!) + * Client option to disable timestamps in connection URLs #386 (commit) + * Return disconnected sessions as 400 errors #391 (commit) + * Handle unicode errors in ASGI driver #389 (commit) + * Replaced deprecated get_event_loop with get_running_loop #384 (commit) + * Remove constructs required by older, now unsupported Python versions (commit) + * Switched to pyenv-asyncio for async unit tests (commit) + * Adopted unittest.mock.AsyncMock in async unit tests instead of homegrown version (commit) + * Removed tests dependency on unittest.TestCase base class (commit) + +------------------------------------------------------------------- +Fri Nov 8 07:49:41 UTC 2024 - Daniel Garcia + +- Add missing dependency python-simple-websocket + +------------------------------------------------------------------- +Fri Oct 18 10:52:04 UTC 2024 - Dirk Müller + +- update to 4.10.1: + * Reject request with incorrect transport #367 (commit) + * Reject requests with incorrect transport #367 (commit) + * Fixed runtime error when disconnecting all clients #368 + (commit) + * More flexible handling of the ASGI path #359 (commit) + * Remove unused parameter in log message #377 (commit) + * Minor updates to the server and client documentation (commit) + * Add Python 3.13 CI builds (commit) + * Run tests with mocked eventlet to avoid 3.13 failures + (commit) + +------------------------------------------------------------------- +Wed Aug 14 00:46:24 UTC 2024 - Guang Yee + +- Update to version 4.8.0 + * Return consistent responses after Websocket connection ends + * Migrate Python package metadata to pyproject.toml + * Remove Python 3.7 from builds + * Internal code restructure (no functional changes) +- Drop python-311.patch as it is included upstream + +------------------------------------------------------------------- +Fri Dec 1 16:43:25 UTC 2023 - Antonio Larrosa + +- Add %{?sle15_python_module_pythons} + +------------------------------------------------------------------- +Tue Feb 21 10:05:49 UTC 2023 - Daniel Garcia + +- Add python-311.patch to support python 3.11, + gh#miguelgrinberg/python-engineio@ac3911356fbe + +------------------------------------------------------------------- +Thu Oct 6 22:22:07 UTC 2022 - Yogalakshmi Arunachalam + +- Update to version 4.3.4 + * Let companion ASGI app handle lifespan events #287 (commit) + * Use configured request timeout when making a WebSocket connection #286 (commit) (thanks jpfarias!) + +- Update to version 4.3.3 + * Handle ASGI lifespan when running with a secondary ASGI app #284 (commit) (thanks mozartilize!) + * Update deprecated usage of asyncio.wait() #281 (commit) (thanks Ben Beasley!) + * Better handling of queued WebSocket messages in uWSGI #256 (commit) + * Gracefully fail to decode empty packets #269 (commit) + * Only attempt to set an async signal handler once #276 (commit) + +- Update to version 4.3.2 + * Option to use a callable for cors_allowed_origins #264 (commit) + * Close aiohttp session when disconnecting #272 (commit) + * Remove 3.6 and pypy-3.6 builds, add 3.10 and pypy-3.8 (commit) + +------------------------------------------------------------------- +Wed Jan 19 12:31:11 UTC 2022 - Axel Braun + +- version 4.3.1 + * Fix support for Sanic v21.9.0 and up (commit) (thanks 13g10n!) + * Include example code in flake8 pass (commit) + * Remove unused version constant #262 (commit 1 commit 2) + * Backward incompatible change: Reject websocket messages larger than max_http_buffer_size #260 (commit) + * Enable or disable specific transports #259 (commit) (thanks Maciej Szeptuch!) + * Option to disable the SIGINT handler in the client (commit) + * Support binary packets with zero length #257 (commit) + * Improve documentation on start_background_task() function (commit) + * Remove unsanitized client input from error messages #250 (commit) (thanks André Carvalho!) + * Use plaintext Content-Type when using polling #248 (commit) (thanks Tobias!) + * Return better error messages for client connection errors #243 (commit) + * Reuse the aiohttp client session on reconnects #226 (commit) + * Support setting socketio_path to the root URL #242 (commit) + * Use the gevent selector to avoid 1024 file handle limitation of select#228 (commit) + * Pass reason when closing a WebSocket connection (commit) + * Improved project structure (commit) + * Remove executable permissions from files that lack shebang lines #240 (commit) (thanks Ben Beasley!) + +------------------------------------------------------------------- +Tue May 25 17:35:08 UTC 2021 - Ben Greiner + +- Update to 4.2.0 + * large changelog: see CHANGES.md + +------------------------------------------------------------------- +Sun May 16 09:42:45 UTC 2021 - Axel Braun + +- python2 build removed + +------------------------------------------------------------------- +Sun Nov 29 00:45:14 UTC 2020 - John Vandenberg + +- Convert to single spec +- Remove merged patch CVE-2019-13611.patch +- Activate test suite +- Update to v3.14.1 + +------------------------------------------------------------------- +Tue Aug 13 18:52:37 UTC 2019 - eapodaca@suse.com + +- Add patch CVE-2019-13611.patch (SOC-9989) (bsc#1141676) + * python-python-engineio: An issue was discovered in + python-engineio through 3.8.2. There is a Cross-Site WebSocket + Hijacking (CSWSH) vulnerability that allows attackers to make + WebSocket connections to a server + +------------------------------------------------------------------- +Thu Feb 1 15:27:05 UTC 2018 - gsmith@suse.com + +- Initial version 2.0.2 diff --git a/python-python-engineio.spec b/python-python-engineio.spec new file mode 100644 index 0000000..e9fdbd3 --- /dev/null +++ b/python-python-engineio.spec @@ -0,0 +1,74 @@ +# +# spec file for package python-python-engineio +# +# Copyright (c) 2025 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/ +# + + +%{?sle15_python_module_pythons} +Name: python-python-engineio +Version: 4.12.0 +Release: 0 +Summary: EngineIO server +License: MIT +URL: http://github.com/miguelgrinberg/python-engineio/ +Source: https://github.com/miguelgrinberg/python-engineio/archive/v%{version}.tar.gz#/python-engineio-%{version}.tar.gz +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module simple-websocket >= 0.10.0} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-simple-websocket +Recommends: python-eventlet +Suggests: python-aiohttp >= 3.4 +Suggests: python-requests >= 2.21.0 +Suggests: python-websocket-client >= 0.54.0 +BuildArch: noarch +# SECTION test requirements +BuildRequires: %{python_module aiohttp >= 3.4} +BuildRequires: %{python_module eventlet} +BuildRequires: %{python_module pytest-asyncio} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module requests >= 2.21.0} +BuildRequires: %{python_module tornado} +BuildRequires: %{python_module websocket-client >= 0.54.0} +# /SECTION +%python_subpackages + +%description +Python implementation of the Engine.IO realtime server. + +%prep +%autosetup -p1 -n python-engineio-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +# FIXME: disable the static files tests because the tests/async/files is missing from +# the release tarball. Hence those tests will always fail. +%pytest -rs -k 'not test_logger and not test_static_file_routing and not test_static_files and not testserver' + +%files %{python_files} +%doc README.md +%license LICENSE +%{python_sitelib}/engineio +%{python_sitelib}/python_engineio-%{version}*-info + +%changelog