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 <yarunacha...@suse.com>
+
+- 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 = miguel.grinb...@gmail.com
 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=

Reply via email to