python-engineio 4.11.1__tar.gz → 4.12.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. {python_engineio-4.11.1/src/python_engineio.egg-info → python_engineio-4.12.0}/PKG-INFO +3 -2
  2. {python_engineio-4.11.1 → python_engineio-4.12.0}/pyproject.toml +1 -1
  3. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/base_server.py +20 -16
  4. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/packet.py +3 -3
  5. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/socket.py +2 -1
  6. {python_engineio-4.11.1 → python_engineio-4.12.0/src/python_engineio.egg-info}/PKG-INFO +3 -2
  7. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/test_socket.py +3 -3
  8. {python_engineio-4.11.1 → python_engineio-4.12.0}/LICENSE +0 -0
  9. {python_engineio-4.11.1 → python_engineio-4.12.0}/MANIFEST.in +0 -0
  10. {python_engineio-4.11.1 → python_engineio-4.12.0}/README.md +0 -0
  11. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/Makefile +0 -0
  12. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/_static/README.md +0 -0
  13. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/api.rst +0 -0
  14. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/client.rst +0 -0
  15. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/conf.py +0 -0
  16. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/index.rst +0 -0
  17. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/intro.rst +0 -0
  18. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/make.bat +0 -0
  19. {python_engineio-4.11.1 → python_engineio-4.12.0}/docs/server.rst +0 -0
  20. {python_engineio-4.11.1 → python_engineio-4.12.0}/setup.cfg +0 -0
  21. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/__init__.py +0 -0
  22. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_client.py +0 -0
  23. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/__init__.py +0 -0
  24. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/_websocket_wsgi.py +0 -0
  25. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/aiohttp.py +0 -0
  26. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/asgi.py +0 -0
  27. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/eventlet.py +0 -0
  28. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/gevent.py +0 -0
  29. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/gevent_uwsgi.py +0 -0
  30. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/sanic.py +0 -0
  31. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/threading.py +0 -0
  32. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_drivers/tornado.py +0 -0
  33. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_server.py +0 -0
  34. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/async_socket.py +0 -0
  35. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/base_client.py +0 -0
  36. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/base_socket.py +0 -0
  37. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/client.py +0 -0
  38. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/exceptions.py +0 -0
  39. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/json.py +0 -0
  40. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/middleware.py +0 -0
  41. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/payload.py +0 -0
  42. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/server.py +0 -0
  43. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/engineio/static_files.py +0 -0
  44. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/python_engineio.egg-info/SOURCES.txt +0 -0
  45. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/python_engineio.egg-info/dependency_links.txt +0 -0
  46. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/python_engineio.egg-info/not-zip-safe +0 -0
  47. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/python_engineio.egg-info/requires.txt +0 -0
  48. {python_engineio-4.11.1 → python_engineio-4.12.0}/src/python_engineio.egg-info/top_level.txt +0 -0
  49. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/__init__.py +0 -0
  50. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/__init__.py +0 -0
  51. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/index.html +0 -0
  52. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_aiohttp.py +0 -0
  53. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_asgi.py +0 -0
  54. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_client.py +0 -0
  55. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_sanic.py +0 -0
  56. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_server.py +0 -0
  57. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_socket.py +0 -0
  58. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/async/test_tornado.py +0 -0
  59. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/__init__.py +0 -0
  60. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/index.html +0 -0
  61. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/test_client.py +0 -0
  62. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/test_middleware.py +0 -0
  63. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/test_packet.py +0 -0
  64. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/test_payload.py +0 -0
  65. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/common/test_server.py +0 -0
  66. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/README.md +0 -0
  67. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/binary_b64_packet.py +0 -0
  68. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/binary_packet.py +0 -0
  69. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/json_packet.py +0 -0
  70. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/payload.py +0 -0
  71. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/run.sh +0 -0
  72. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/server_receive.py +0 -0
  73. {python_engineio-4.11.1 → python_engineio-4.12.0}/tests/performance/text_packet.py +0 -0
  74. {python_engineio-4.11.1 → python_engineio-4.12.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.11.1
3
+ Version: 4.12.0
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/miguelgrinberg/python-engineio
@@ -21,6 +21,7 @@ Provides-Extra: asyncio-client
21
21
  Requires-Dist: aiohttp>=3.4; extra == "asyncio-client"
22
22
  Provides-Extra: docs
23
23
  Requires-Dist: sphinx; extra == "docs"
24
+ Dynamic: license-file
24
25
 
25
26
  python-engineio
26
27
  ===============
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-engineio"
3
- version = "4.11.1"
3
+ version = "4.12.0"
4
4
  authors = [{name = "Miguel Grinberg", email = "miguel.grinberg@gmail.com"}]
5
5
  description = "Engine.IO server and client for Python"
6
6
  classifiers = [
@@ -282,29 +282,33 @@ class BaseServer:
282
282
  'response': message.encode('utf-8')}
283
283
 
284
284
  def _cors_allowed_origins(self, environ):
285
- default_origins = []
286
- if 'wsgi.url_scheme' in environ and 'HTTP_HOST' in environ:
287
- default_origins.append('{scheme}://{host}'.format(
288
- scheme=environ['wsgi.url_scheme'], host=environ['HTTP_HOST']))
289
- if 'HTTP_X_FORWARDED_PROTO' in environ or \
290
- 'HTTP_X_FORWARDED_HOST' in environ:
291
- scheme = environ.get(
292
- 'HTTP_X_FORWARDED_PROTO',
293
- environ['wsgi.url_scheme']).split(',')[0].strip()
294
- default_origins.append('{scheme}://{host}'.format(
295
- scheme=scheme, host=environ.get(
296
- 'HTTP_X_FORWARDED_HOST', environ['HTTP_HOST']).split(
297
- ',')[0].strip()))
298
285
  if self.cors_allowed_origins is None:
299
- allowed_origins = default_origins
286
+ allowed_origins = []
287
+ if 'wsgi.url_scheme' in environ and 'HTTP_HOST' in environ:
288
+ allowed_origins.append('{scheme}://{host}'.format(
289
+ scheme=environ['wsgi.url_scheme'],
290
+ host=environ['HTTP_HOST']))
291
+ if 'HTTP_X_FORWARDED_PROTO' in environ or \
292
+ 'HTTP_X_FORWARDED_HOST' in environ:
293
+ scheme = environ.get(
294
+ 'HTTP_X_FORWARDED_PROTO',
295
+ environ['wsgi.url_scheme']).split(',')[0].strip()
296
+ allowed_origins.append('{scheme}://{host}'.format(
297
+ scheme=scheme, host=environ.get(
298
+ 'HTTP_X_FORWARDED_HOST',
299
+ environ['HTTP_HOST']).split(
300
+ ',')[0].strip()))
300
301
  elif self.cors_allowed_origins == '*':
301
302
  allowed_origins = None
302
303
  elif isinstance(self.cors_allowed_origins, str):
303
304
  allowed_origins = [self.cors_allowed_origins]
304
305
  elif callable(self.cors_allowed_origins):
305
306
  origin = environ.get('HTTP_ORIGIN')
306
- allowed_origins = [origin] \
307
- if self.cors_allowed_origins(origin) else []
307
+ try:
308
+ is_allowed = self.cors_allowed_origins(origin, environ)
309
+ except TypeError:
310
+ is_allowed = self.cors_allowed_origins(origin)
311
+ allowed_origins = [origin] if is_allowed else []
308
312
  else:
309
313
  allowed_origins = self.cors_allowed_origins
310
314
  return allowed_origins
@@ -72,11 +72,11 @@ class Packet:
72
72
  else:
73
73
  self.packet_type = int(encoded_packet[0])
74
74
  try:
75
- self.data = self.json.loads(encoded_packet[1:])
76
- if isinstance(self.data, int):
75
+ if encoded_packet[1].isnumeric():
77
76
  # do not allow integer payloads, see
78
77
  # github.com/miguelgrinberg/python-engineio/issues/75
79
78
  # for background on this decision
80
79
  raise ValueError
81
- except ValueError:
80
+ self.data = self.json.loads(encoded_packet[1:])
81
+ except (ValueError, IndexError):
82
82
  self.data = encoded_packet[1:]
@@ -250,6 +250,7 @@ class Socket(base_socket.BaseSocket):
250
250
 
251
251
  self.queue.put(None) # unlock the writer task so that it can exit
252
252
  writer_task.join()
253
- self.close(wait=False, abort=True)
253
+ self.close(wait=False, abort=True,
254
+ reason=self.server.reason.TRANSPORT_CLOSE)
254
255
 
255
256
  return []
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.11.1
3
+ Version: 4.12.0
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/miguelgrinberg/python-engineio
@@ -21,6 +21,7 @@ Provides-Extra: asyncio-client
21
21
  Requires-Dist: aiohttp>=3.4; extra == "asyncio-client"
22
22
  Provides-Extra: docs
23
23
  Requires-Dist: sphinx; extra == "docs"
24
+ Dynamic: license-file
24
25
 
25
26
  python-engineio
26
27
  ===============
@@ -340,7 +340,7 @@ class TestSocket:
340
340
  [
341
341
  mock.call('message', 'sid', 'foo', run_async=True),
342
342
  mock.call('disconnect', 'sid',
343
- mock_server.reason.SERVER_DISCONNECT,
343
+ mock_server.reason.TRANSPORT_CLOSE,
344
344
  run_async=False)
345
345
  ]
346
346
  )
@@ -375,7 +375,7 @@ class TestSocket:
375
375
  [
376
376
  mock.call('message', 'sid', 'foo', run_async=True),
377
377
  mock.call('disconnect', 'sid',
378
- mock_server.reason.SERVER_DISCONNECT,
378
+ mock_server.reason.TRANSPORT_CLOSE,
379
379
  run_async=False)
380
380
  ]
381
381
  )
@@ -494,7 +494,7 @@ class TestSocket:
494
494
  [
495
495
  mock.call('message', 'sid', foo, run_async=True),
496
496
  mock.call('disconnect', 'sid',
497
- mock_server.reason.SERVER_DISCONNECT,
497
+ mock_server.reason.TRANSPORT_CLOSE,
498
498
  run_async=False)
499
499
  ]
500
500
  )