Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-python-engineio for
openSUSE:Factory checked in at 2022-10-08 01:25:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-engineio (Old)
and /work/SRC/openSUSE:Factory/.python-python-engineio.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-engineio"
Sat Oct 8 01:25:30 2022 rev:4 rq:1008713 version:4.3.4
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-python-engineio/python-python-engineio.changes
2022-01-24 23:10:48.842421689 +0100
+++
/work/SRC/openSUSE:Factory/.python-python-engineio.new.2275/python-python-engineio.changes
2022-10-08 01:25:52.170318348 +0200
@@ -1,0 +2,19 @@
+Thu Oct 6 22:22:07 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- 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)
+
+-------------------------------------------------------------------
Old:
----
python-engineio-4.3.1.tar.gz
New:
----
python-engineio-4.3.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-engineio.spec ++++++
--- /var/tmp/diff_new_pack.Ivh8xR/_old 2022-10-08 01:25:54.862324523 +0200
+++ /var/tmp/diff_new_pack.Ivh8xR/_new 2022-10-08 01:25:54.870324541 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python3-%{**}}
%define skip_python2 1
Name: python-python-engineio
-Version: 4.3.1
+Version: 4.3.4
Release: 0
Summary: EngineIO server
License: MIT
++++++ python-engineio-4.3.1.tar.gz -> python-engineio-4.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/.github/workflows/tests.yml
new/python-engineio-4.3.4/.github/workflows/tests.yml
--- old/python-engineio-4.3.1/.github/workflows/tests.yml 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/.github/workflows/tests.yml 2022-08-03
20:41:12.000000000 +0200
@@ -22,11 +22,11 @@
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
- python: ['3.6', '3.7', '3.8', '3.9', 'pypy3']
+ python: ['3.7', '3.8', '3.9', '3.10', 'pypy-3.8']
exclude:
# pypy3 currently fails to run on Windows
- os: windows-latest
- python: pypy3
+ python: pypy-3.8
# the loop fails to close in the Mac version of 3.9
- os: macos-latest
python: '3.9'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/.readthedocs.yml
new/python-engineio-4.3.4/.readthedocs.yml
--- old/python-engineio-4.3.1/.readthedocs.yml 2022-01-11 13:15:01.000000000
+0100
+++ new/python-engineio-4.3.4/.readthedocs.yml 1970-01-01 01:00:00.000000000
+0100
@@ -1,3 +0,0 @@
-python:
- version: 3.6
- setup_py_install: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/CHANGES.md
new/python-engineio-4.3.4/CHANGES.md
--- old/python-engineio-4.3.1/CHANGES.md 2022-01-11 13:15:01.000000000
+0100
+++ new/python-engineio-4.3.4/CHANGES.md 2022-08-03 20:41:12.000000000
+0200
@@ -1,10 +1,29 @@
# python-engineio change log
+**Release 4.3.4** - 2022-08-03
+
+- Let companion ASGI app handle lifespan events
[#287](https://github.com/miguelgrinberg/python-engineio/issues/287)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/1c9001c537fd669a3b0e28d75f707216ec48befa))
+- Use configured request timeout when making a WebSocket connection
[#286](https://github.com/miguelgrinberg/python-engineio/issues/286)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/f6df30b841a86f96765c307efa99a7505dd9b4c1))
(thanks **jpfarias**!)
+
+**Release 4.3.3** - 2022-07-04
+
+- Handle ASGI lifespan when running with a secondary ASGI app
[#284](https://github.com/miguelgrinberg/python-engineio/issues/284)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/c4a021ee9c4d760bbe4066887ca816fc7c718f98))
(thanks **mozartilize**!)
+- Update deprecated usage of `asyncio.wait()`
[#281](https://github.com/miguelgrinberg/python-engineio/issues/281)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/d3a23c0936cda2ff3de8c5ae0c834ffef515e8cb))
(thanks **Ben Beasley**!)
+- Better handling of queued WebSocket messages in uWSGI
[#256](https://github.com/miguelgrinberg/python-engineio/issues/256)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/ec7b3da2e48060e177bf8ad6a9f5fae445207c82))
+- Gracefully fail to decode empty packets
[#269](https://github.com/miguelgrinberg/python-engineio/issues/269)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/9c657071f3d42a88fd1615b5edd245a89445ea1b))
+- Only attempt to set an async signal handler once
[#276](https://github.com/miguelgrinberg/python-engineio/issues/276)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/6869751aafb6db83d1a53fbd47d3fbfd2a8ae490))
+
+**Release 4.3.2** - 2022-04-24
+
+- Option to use a callable for `cors_allowed_origins`
[#264](https://github.com/miguelgrinberg/python-engineio/issues/264)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/60e8e553e1fc64a5b0dbb846a86c5c0698101a9e))
+- Close aiohttp session when disconnecting
[#272](https://github.com/miguelgrinberg/python-engineio/issues/272)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/a9fb317c29d93b98a729df800f124b6b923fc82c))
+- Remove 3.6 and pypy-3.6 builds, add 3.10 and pypy-3.8
([commit](https://github.com/miguelgrinberg/python-engineio/commit/06480be268852ffc96793ef52213ad598b85fa69))
+
**Release 4.3.1** - 2022-01-11
- Fix support for Sanic v21.9.0 and up
([commit](https://github.com/miguelgrinberg/python-engineio/commit/b0157d5a7e35ad83bc33f363b154402838fac83b))
(thanks **13g10n**!)
- Include example code in flake8 pass
([commit](https://github.com/miguelgrinberg/python-engineio/commit/776bb86bb560bcd1912350bc24382fe6090c9c84))
-- Remove unused __version__ constant
[#262](https://github.com/miguelgrinberg/python-engineio/issues/262) ([commit
1](https://github.com/miguelgrinberg/python-engineio/commit/e882f5949bdd1618d97b0cade18a7e8af8670b41)
[commit
2](https://github.com/miguelgrinberg/python-engineio/commit/ed4b1e2b8b18ac5adb2ee9a2ef126a4e5ffee128))
+- Remove unused `__version__` constant
[#262](https://github.com/miguelgrinberg/python-engineio/issues/262) ([commit
1](https://github.com/miguelgrinberg/python-engineio/commit/e882f5949bdd1618d97b0cade18a7e8af8670b41)
[commit
2](https://github.com/miguelgrinberg/python-engineio/commit/ed4b1e2b8b18ac5adb2ee9a2ef126a4e5ffee128))
**Release 4.3.0** - 2021-10-26
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/examples/client/javascript/package-lock.json
new/python-engineio-4.3.4/examples/client/javascript/package-lock.json
--- old/python-engineio-4.3.1/examples/client/javascript/package-lock.json
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/examples/client/javascript/package-lock.json
2022-08-03 20:41:12.000000000 +0200
@@ -9,7 +9,7 @@
"version": "0.1.0",
"dependencies": {
"enchilada": "0.13.0",
- "engine.io": "^4.0.0",
+ "engine.io": "^4.1.2",
"engine.io-client": "^4.0.0",
"express": "^4.17.1",
"smoothie": "1.19.0"
@@ -551,17 +551,17 @@
}
},
"node_modules/engine.io": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.0.4.tgz",
- "integrity":
"sha512-4ggUX5pICZU17OTZNFv5+uFE/ZyoK+TIXv2SvxWWX8lwStllQ6Lvvs4lDBqvKpV9EYXNcvlNOcjKChd/mo+8Tw==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz",
+ "integrity":
"sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==",
"dependencies": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
"cors": "~2.8.5",
- "debug": "~4.1.0",
+ "debug": "~4.3.1",
"engine.io-parser": "~4.0.0",
- "ws": "^7.1.2"
+ "ws": "~7.4.2"
},
"engines": {
"node": ">=10.0.0"
@@ -627,12 +627,19 @@
}
},
"node_modules/engine.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity":
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a
low-severity ReDos regression when used in a Node.js environment. It is
recommended you upgrade to 3.2.7 or 4.3.1.
(https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity":
"sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/engine.io/node_modules/ms": {
@@ -652,8 +659,7 @@
"dependencies": {
"esprima": "~1.0.4",
"estraverse": "~1.5.0",
- "esutils": "~1.0.0",
- "source-map": "~0.1.30"
+ "esutils": "~1.0.0"
},
"bin": {
"escodegen": "bin/escodegen.js",
@@ -1810,9 +1816,9 @@
}
},
"node_modules/ws": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz",
- "integrity":
"sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==",
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity":
"sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
"engines": {
"node": ">=8.3.0"
},
@@ -2333,25 +2339,25 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"engine.io": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.0.4.tgz",
- "integrity":
"sha512-4ggUX5pICZU17OTZNFv5+uFE/ZyoK+TIXv2SvxWWX8lwStllQ6Lvvs4lDBqvKpV9EYXNcvlNOcjKChd/mo+8Tw==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz",
+ "integrity":
"sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==",
"requires": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
"cors": "~2.8.5",
- "debug": "~4.1.0",
+ "debug": "~4.3.1",
"engine.io-parser": "~4.0.0",
- "ws": "^7.1.2"
+ "ws": "~7.4.2"
},
"dependencies": {
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity":
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity":
"sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
},
"ms": {
@@ -3365,9 +3371,9 @@
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
},
"ws": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz",
- "integrity":
"sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==",
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity":
"sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
"requires": {}
},
"xmlhttprequest-ssl": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/examples/client/javascript/package.json
new/python-engineio-4.3.4/examples/client/javascript/package.json
--- old/python-engineio-4.3.1/examples/client/javascript/package.json
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/examples/client/javascript/package.json
2022-08-03 20:41:12.000000000 +0200
@@ -3,7 +3,7 @@
"version": "0.1.0",
"dependencies": {
"enchilada": "0.13.0",
- "engine.io": "^4.0.0",
+ "engine.io": "^4.1.2",
"engine.io-client": "^4.0.0",
"express": "^4.17.1",
"smoothie": "1.19.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/examples/server/javascript/package-lock.json
new/python-engineio-4.3.4/examples/server/javascript/package-lock.json
--- old/python-engineio-4.3.1/examples/server/javascript/package-lock.json
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/examples/server/javascript/package-lock.json
2022-08-03 20:41:12.000000000 +0200
@@ -9,7 +9,7 @@
"version": "0.1.0",
"dependencies": {
"enchilada": "0.13.0",
- "engine.io": "^4.0.0",
+ "engine.io": "^4.1.2",
"engine.io-client": "^4.0.0",
"express": "^4.17.1",
"smoothie": "1.19.0"
@@ -551,17 +551,17 @@
}
},
"node_modules/engine.io": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.0.4.tgz",
- "integrity":
"sha512-4ggUX5pICZU17OTZNFv5+uFE/ZyoK+TIXv2SvxWWX8lwStllQ6Lvvs4lDBqvKpV9EYXNcvlNOcjKChd/mo+8Tw==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz",
+ "integrity":
"sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==",
"dependencies": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
"cors": "~2.8.5",
- "debug": "~4.1.0",
+ "debug": "~4.3.1",
"engine.io-parser": "~4.0.0",
- "ws": "^7.1.2"
+ "ws": "~7.4.2"
},
"engines": {
"node": ">=10.0.0"
@@ -627,12 +627,19 @@
}
},
"node_modules/engine.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity":
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a
low-severity ReDos regression when used in a Node.js environment. It is
recommended you upgrade to 3.2.7 or 4.3.1.
(https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity":
"sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/engine.io/node_modules/ms": {
@@ -652,8 +659,7 @@
"dependencies": {
"esprima": "~1.0.4",
"estraverse": "~1.5.0",
- "esutils": "~1.0.0",
- "source-map": "~0.1.30"
+ "esutils": "~1.0.0"
},
"bin": {
"escodegen": "bin/escodegen.js",
@@ -1810,9 +1816,9 @@
}
},
"node_modules/ws": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz",
- "integrity":
"sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==",
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity":
"sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
"engines": {
"node": ">=8.3.0"
},
@@ -2333,25 +2339,25 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"engine.io": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.0.4.tgz",
- "integrity":
"sha512-4ggUX5pICZU17OTZNFv5+uFE/ZyoK+TIXv2SvxWWX8lwStllQ6Lvvs4lDBqvKpV9EYXNcvlNOcjKChd/mo+8Tw==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz",
+ "integrity":
"sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==",
"requires": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
"cors": "~2.8.5",
- "debug": "~4.1.0",
+ "debug": "~4.3.1",
"engine.io-parser": "~4.0.0",
- "ws": "^7.1.2"
+ "ws": "~7.4.2"
},
"dependencies": {
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity":
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity":
"sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
},
"ms": {
@@ -3365,9 +3371,9 @@
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
},
"ws": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz",
- "integrity":
"sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==",
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+ "integrity":
"sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
"requires": {}
},
"xmlhttprequest-ssl": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/examples/server/javascript/package.json
new/python-engineio-4.3.4/examples/server/javascript/package.json
--- old/python-engineio-4.3.1/examples/server/javascript/package.json
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/examples/server/javascript/package.json
2022-08-03 20:41:12.000000000 +0200
@@ -3,7 +3,7 @@
"version": "0.1.0",
"dependencies": {
"enchilada": "0.13.0",
- "engine.io": "^4.0.0",
+ "engine.io": "^4.1.2",
"engine.io-client": "^4.0.0",
"express": "^4.17.1",
"smoothie": "1.19.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/examples/server/sanic/requirements.txt
new/python-engineio-4.3.4/examples/server/sanic/requirements.txt
--- old/python-engineio-4.3.1/examples/server/sanic/requirements.txt
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/examples/server/sanic/requirements.txt
2022-08-03 20:41:12.000000000 +0200
@@ -3,6 +3,6 @@
multidict==5.2.0
sanic==21.12.0
sanic-routing==0.7.2
-ujson==5.1.0
+ujson==5.2.0
uvloop==0.16.0
websockets==10.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/setup.cfg
new/python-engineio-4.3.4/setup.cfg
--- old/python-engineio-4.3.1/setup.cfg 2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/setup.cfg 2022-08-03 20:41:12.000000000 +0200
@@ -1,6 +1,6 @@
[metadata]
name = python-engineio
-version = 4.3.1
+version = 4.3.4
author = Miguel Grinberg
author_email = [email protected]
description = Engine.IO server and client for Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/src/engineio/async_drivers/asgi.py
new/python-engineio-4.3.4/src/engineio/async_drivers/asgi.py
--- old/python-engineio-4.3.1/src/engineio/async_drivers/asgi.py
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/async_drivers/asgi.py
2022-08-03 20:41:12.000000000 +0200
@@ -59,12 +59,12 @@
else:
static_file = get_static_file(scope['path'], self.static_files) \
if scope['type'] == 'http' and self.static_files else None
- if static_file and os.path.exists(static_file['filename']):
+ if scope['type'] == 'lifespan':
+ await self.lifespan(scope, receive, send)
+ elif static_file and os.path.exists(static_file['filename']):
await self.serve_static_file(static_file, receive, send)
elif self.other_asgi_app is not None:
await self.other_asgi_app(scope, receive, send)
- elif scope['type'] == 'lifespan':
- await self.lifespan(receive, send)
else:
await self.not_found(receive, send)
@@ -81,7 +81,13 @@
await send({'type': 'http.response.body',
'body': payload})
- async def lifespan(self, receive, send):
+ async def lifespan(self, scope, receive, send):
+ if self.other_asgi_app is not None and self.on_startup is None and \
+ self.on_shutdown is None:
+ # let the other ASGI app handle lifespan events
+ await self.other_asgi_app(scope, receive, send)
+ return
+
while True:
event = await receive()
if event['type'] == 'lifespan.startup':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/src/engineio/async_drivers/gevent_uwsgi.py
new/python-engineio-4.3.4/src/engineio/async_drivers/gevent_uwsgi.py
--- old/python-engineio-4.3.1/src/engineio/async_drivers/gevent_uwsgi.py
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/async_drivers/gevent_uwsgi.py
2022-08-03 20:41:12.000000000 +0200
@@ -26,6 +26,7 @@
def __init__(self, app):
self.app = app
self._sock = None
+ self.received_messages = []
def __call__(self, environ, start_response):
self._sock = uwsgi.connection_fd()
@@ -117,6 +118,9 @@
return None
return self._decode_received(msg)
else:
+ if self.received_messages:
+ return self.received_messages.pop(0)
+
# we wake up at least every 3 seconds to let uWSGI
# do its ping/ponging
event_set = self._event.wait(timeout=3)
@@ -133,13 +137,19 @@
self._send(msg)
# maybe there is something to receive, if not, at least
# ensure uWSGI does its ping/ponging
- try:
- msg = uwsgi.websocket_recv_nb()
- except IOError: # connection closed
- self._select_greenlet.kill()
- return None
- if msg: # message available
- return self._decode_received(msg)
+ while True:
+ try:
+ msg = uwsgi.websocket_recv_nb()
+ except IOError: # connection closed
+ self._select_greenlet.kill()
+ return None
+ if msg: # message available
+ self.received_messages.append(
+ self._decode_received(msg))
+ else:
+ break
+ if self.received_messages:
+ return self.received_messages.pop(0)
_async = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/src/engineio/asyncio_client.py
new/python-engineio-4.3.4/src/engineio/asyncio_client.py
--- old/python-engineio-4.3.1/src/engineio/asyncio_client.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/asyncio_client.py 2022-08-03
20:41:12.000000000 +0200
@@ -95,9 +95,9 @@
try:
asyncio.get_event_loop().add_signal_handler(
signal.SIGINT, async_signal_handler)
- async_signal_handler_set = True
except NotImplementedError: # pragma: no cover
self.logger.warning('Signal handler is unsupported')
+ async_signal_handler_set = True
if self.state != 'disconnected':
raise ValueError('Client is not in a disconnected state')
@@ -158,6 +158,8 @@
client.connected_clients.remove(self)
except ValueError: # pragma: no cover
pass
+ if self.http and not self.http.closed: # pragma: no cover
+ await self.http.close()
self._reset()
def start_background_task(self, target, *args, **kwargs):
@@ -302,11 +304,12 @@
ssl_context.verify_mode = ssl.CERT_NONE
ws = await self.http.ws_connect(
websocket_url + self._get_url_timestamp(),
- headers=headers, ssl=ssl_context)
+ headers=headers, ssl=ssl_context,
+ timeout=self.request_timeout)
else:
ws = await self.http.ws_connect(
websocket_url + self._get_url_timestamp(),
- headers=headers)
+ headers=headers, timeout=self.request_timeout)
except (aiohttp.client_exceptions.WSServerHandshakeError,
aiohttp.client_exceptions.ServerConnectionError,
aiohttp.client_exceptions.ClientConnectionError):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/src/engineio/asyncio_server.py
new/python-engineio-4.3.4/src/engineio/asyncio_server.py
--- old/python-engineio-4.3.1/src/engineio/asyncio_server.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/asyncio_server.py 2022-08-03
20:41:12.000000000 +0200
@@ -175,7 +175,7 @@
if sid in self.sockets: # pragma: no cover
del self.sockets[sid]
else:
- await asyncio.wait([client.close()
+ await asyncio.wait([asyncio.create_task(client.close())
for client in self.sockets.values()])
self.sockets = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/src/engineio/client.py
new/python-engineio-4.3.4/src/engineio/client.py
--- old/python-engineio-4.3.1/src/engineio/client.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/client.py 2022-08-03
20:41:12.000000000 +0200
@@ -417,7 +417,8 @@
try:
ws = websocket.create_connection(
websocket_url + self._get_url_timestamp(), header=headers,
- cookie=cookies, enable_multithread=True, **extra_options)
+ cookie=cookies, enable_multithread=True,
+ timeout=self.request_timeout, **extra_options)
except (ConnectionError, IOError, websocket.WebSocketException):
if upgrade:
self.logger.warning(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/src/engineio/packet.py
new/python-engineio-4.3.4/src/engineio/packet.py
--- old/python-engineio-4.3.1/src/engineio/packet.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/packet.py 2022-08-03
20:41:12.000000000 +0200
@@ -48,6 +48,8 @@
def decode(self, encoded_packet):
"""Decode a transmitted package."""
self.binary = isinstance(encoded_packet, binary_types)
+ if not self.binary and len(encoded_packet) == 0:
+ raise ValueError('Invalid empty packet received')
b64 = not self.binary and encoded_packet[0] == 'b'
if b64:
self.binary = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/src/engineio/server.py
new/python-engineio-4.3.4/src/engineio/server.py
--- old/python-engineio-4.3.1/src/engineio/server.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/src/engineio/server.py 2022-08-03
20:41:12.000000000 +0200
@@ -697,6 +697,10 @@
allowed_origins = None
elif isinstance(self.cors_allowed_origins, str):
allowed_origins = [self.cors_allowed_origins]
+ elif callable(self.cors_allowed_origins):
+ origin = environ.get('HTTP_ORIGIN')
+ allowed_origins = [origin] \
+ if self.cors_allowed_origins(origin) else []
else:
allowed_origins = self.cors_allowed_origins
return allowed_origins
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/tests/asyncio/test_async_asgi.py
new/python-engineio-4.3.4/tests/asyncio/test_async_asgi.py
--- old/python-engineio-4.3.1/tests/asyncio/test_async_asgi.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tests/asyncio/test_async_asgi.py 2022-08-03
20:41:12.000000000 +0200
@@ -54,6 +54,13 @@
_run(app(scope, 'receive', 'send'))
other_app.mock.assert_called_once_with(scope, 'receive', 'send')
+ def test_other_app_lifespan_routing(self):
+ other_app = AsyncMock()
+ app = async_asgi.ASGIApp('eio', other_app)
+ scope = {'type': 'lifespan'}
+ _run(app(scope, 'receive', 'send'))
+ other_app.mock.assert_called_once_with(scope, 'receive', 'send')
+
def test_static_file_routing(self):
root_dir = os.path.dirname(__file__)
app = async_asgi.ASGIApp(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/tests/asyncio/test_asyncio_client.py
new/python-engineio-4.3.4/tests/asyncio/test_asyncio_client.py
--- old/python-engineio-4.3.1/tests/asyncio/test_asyncio_client.py
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tests/asyncio/test_asyncio_client.py
2022-08-03 20:41:12.000000000 +0200
@@ -539,6 +539,7 @@
c.http.ws_connect.mock.assert_called_once_with(
'ws://foo/engine.io/?transport=websocket&EIO=4&t=123.456',
headers={'Foo': 'Bar'},
+ timeout=5
)
@mock.patch('engineio.client.time.time', return_value=123.456)
@@ -553,6 +554,7 @@
c.http.ws_connect.mock.assert_called_once_with(
'ws://foo/engine.io/?transport=websocket&EIO=4&sid=123&t=123.456',
headers={},
+ timeout=5,
)
def test_websocket_connection_no_open_packet(self):
@@ -605,6 +607,7 @@
c.http.ws_connect.mock.assert_called_once_with(
'ws://foo/engine.io/?transport=websocket&EIO=4&t=123.456',
headers={},
+ timeout=5,
)
@mock.patch('engineio.client.time.time', return_value=123.456)
@@ -677,6 +680,7 @@
c.http.ws_connect.mock.assert_called_once_with(
'ws://foo/engine.io/?transport=websocket&EIO=4&t=123.456',
headers={},
+ timeout=5,
)
@mock.patch('engineio.client.time.time', return_value=123.456)
@@ -711,6 +715,7 @@
c.http.ws_connect.mock.assert_called_once_with(
'ws://foo/engine.io/?transport=websocket&EIO=4&t=123.456',
headers={},
+ timeout=5,
)
c.http.cookie_jar.update_cookies.assert_called_once_with(
{'key': 'value', 'key2': 'value2', 'key3': '"value3="'}
@@ -752,6 +757,7 @@
c.http.ws_connect.mock.assert_called_once_with(
'ws://foo/engine.io/?transport=websocket&EIO=4&t=123.456',
headers={'Foo': 'Bar'},
+ timeout=5,
)
c.http.cookie_jar.update_cookies.assert_called_once_with(
{'key3': 'value3'}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.3.1/tests/asyncio/test_asyncio_server.py
new/python-engineio-4.3.4/tests/asyncio/test_asyncio_server.py
--- old/python-engineio-4.3.1/tests/asyncio/test_asyncio_server.py
2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tests/asyncio/test_asyncio_server.py
2022-08-03 20:41:12.000000000 +0200
@@ -405,6 +405,29 @@
assert ('Access-Control-Allow-Origin', 'b') in headers
@mock.patch('importlib.import_module')
+ def test_connect_cors_allowed_origin_with_callable(self, import_module):
+ def cors(origin):
+ return origin == 'a'
+
+ environ = {
+ 'REQUEST_METHOD': 'GET',
+ 'QUERY_STRING': '',
+ 'HTTP_ORIGIN': 'a'
+ }
+ a = self.get_async_mock(environ)
+ import_module.side_effect = [a]
+
+ s = asyncio_server.AsyncServer(cors_allowed_origins=cors)
+ _run(s.handle_request('request'))
+ assert a._async['make_response'].call_args[0][0] == '200 OK'
+ headers = a._async['make_response'].call_args[0][1]
+ assert ('Access-Control-Allow-Origin', 'a') in headers
+
+ environ['HTTP_ORIGIN'] = 'b'
+ _run(s.handle_request('request'))
+ assert a._async['make_response'].call_args[0][0] == '400 BAD REQUEST'
+
+ @mock.patch('importlib.import_module')
def test_connect_cors_not_allowed_origin(self, import_module):
a = self.get_async_mock(
{'REQUEST_METHOD': 'GET', 'QUERY_STRING': '', 'HTTP_ORIGIN': 'c'}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/tests/common/test_client.py
new/python-engineio-4.3.4/tests/common/test_client.py
--- old/python-engineio-4.3.1/tests/common/test_client.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tests/common/test_client.py 2022-08-03
20:41:12.000000000 +0200
@@ -558,6 +558,7 @@
header={'Foo': 'Bar'},
cookie=None,
enable_multithread=True,
+ timeout=5
)
@mock.patch('engineio.client.time.time', return_value=123.456)
@@ -578,6 +579,7 @@
header={'Foo': 'Bar'},
cookie=None,
enable_multithread=True,
+ timeout=5
)
@mock.patch('engineio.client.time.time', return_value=123.456)
@@ -596,6 +598,7 @@
header={},
cookie=None,
enable_multithread=True,
+ timeout=5
)
@mock.patch('engineio.client.websocket.create_connection')
@@ -644,6 +647,7 @@
'header': {},
'cookie': None,
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -685,6 +689,7 @@
'header': {},
'cookie': None,
'enable_multithread': True,
+ 'timeout': 5,
'sslopt': {'cert_reqs': ssl.CERT_NONE},
}
@@ -722,6 +727,7 @@
'header': {},
'cookie': 'key=value; key2=value2',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -758,6 +764,7 @@
'header': {'Foo': 'bar'},
'cookie': 'key=value',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -799,6 +806,7 @@
assert create_connection.call_args[1] == {
'header': {},
'enable_multithread': True,
+ 'timeout': 5,
'cookie': 'key=value; key2=value2; key3=value3',
}
@@ -831,6 +839,7 @@
'header': {'Authorization': 'Basic Zm9vOmJhcg=='},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -863,6 +872,7 @@
'header': {},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -895,6 +905,7 @@
'header': {},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -934,6 +945,7 @@
'header': {},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -994,6 +1006,7 @@
'header': {},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
if results:
expected_results.update({
@@ -1033,6 +1046,7 @@
'header': {},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
@@ -1066,6 +1080,7 @@
'header': {},
'cookie': '',
'enable_multithread': True,
+ 'timeout': 5,
}
@mock.patch('engineio.client.websocket.create_connection')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/tests/common/test_packet.py
new/python-engineio-4.3.4/tests/common/test_packet.py
--- old/python-engineio-4.3.1/tests/common/test_packet.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tests/common/test_packet.py 2022-08-03
20:41:12.000000000 +0200
@@ -130,3 +130,7 @@
def test_binary_non_message_packet(self):
with pytest.raises(ValueError):
packet.Packet(packet.NOOP, b'\x01\x02\x03')
+
+ def test_decode_invalid_empty_text_packet(self):
+ with pytest.raises(ValueError):
+ packet.Packet(encoded_packet='')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/tests/common/test_server.py
new/python-engineio-4.3.4/tests/common/test_server.py
--- old/python-engineio-4.3.1/tests/common/test_server.py 2022-01-11
13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tests/common/test_server.py 2022-08-03
20:41:12.000000000 +0200
@@ -586,6 +586,26 @@
headers = start_response.call_args[0][1]
assert ('Access-Control-Allow-Origin', 'b') in headers
+ def test_connect_cors_allowed_origin_with_callable(self):
+ def cors(origin):
+ return origin == 'a'
+
+ s = server.Server(cors_allowed_origins=cors)
+ environ = {
+ 'REQUEST_METHOD': 'GET',
+ 'QUERY_STRING': 'EIO=4',
+ 'HTTP_ORIGIN': 'a',
+ }
+ start_response = mock.MagicMock()
+ s.handle_request(environ, start_response)
+ assert start_response.call_args[0][0] == '200 OK'
+ headers = start_response.call_args[0][1]
+ assert ('Access-Control-Allow-Origin', 'a') in headers
+
+ environ['HTTP_ORIGIN'] = 'b'
+ s.handle_request(environ, start_response)
+ assert start_response.call_args[0][0] == '400 BAD REQUEST'
+
def test_connect_cors_not_allowed_origin(self):
s = server.Server(cors_allowed_origins=['a', 'b'])
environ = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.3.1/tox.ini
new/python-engineio-4.3.4/tox.ini
--- old/python-engineio-4.3.1/tox.ini 2022-01-11 13:15:01.000000000 +0100
+++ new/python-engineio-4.3.4/tox.ini 2022-08-03 20:41:12.000000000 +0200
@@ -1,5 +1,5 @@
[tox]
-envlist=flake8,py36,py37,py38,py39,pypy3,docs
+envlist=flake8,py37,py38,py39,py310,pypy3,docs
skip_missing_interpreters=True
[gh-actions]
@@ -8,7 +8,8 @@
3.7: py37
3.8: py38
3.9: py39
- pypy3: pypy3
+ 3.10: py310
+ pypy-3: pypy3
[testenv]
commands=