python-engineio 4.11.2__tar.gz → 4.12.1__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.2/src/python_engineio.egg-info → python_engineio-4.12.1}/PKG-INFO +4 -3
  2. {python_engineio-4.11.2 → python_engineio-4.12.1}/pyproject.toml +2 -2
  3. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/asgi.py +6 -1
  4. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/base_server.py +20 -16
  5. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/packet.py +3 -3
  6. {python_engineio-4.11.2 → python_engineio-4.12.1/src/python_engineio.egg-info}/PKG-INFO +4 -3
  7. {python_engineio-4.11.2 → python_engineio-4.12.1}/LICENSE +0 -0
  8. {python_engineio-4.11.2 → python_engineio-4.12.1}/MANIFEST.in +0 -0
  9. {python_engineio-4.11.2 → python_engineio-4.12.1}/README.md +0 -0
  10. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/Makefile +0 -0
  11. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/_static/README.md +0 -0
  12. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/api.rst +0 -0
  13. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/client.rst +0 -0
  14. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/conf.py +0 -0
  15. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/index.rst +0 -0
  16. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/intro.rst +0 -0
  17. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/make.bat +0 -0
  18. {python_engineio-4.11.2 → python_engineio-4.12.1}/docs/server.rst +0 -0
  19. {python_engineio-4.11.2 → python_engineio-4.12.1}/setup.cfg +0 -0
  20. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/__init__.py +0 -0
  21. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_client.py +0 -0
  22. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/__init__.py +0 -0
  23. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/_websocket_wsgi.py +0 -0
  24. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/aiohttp.py +0 -0
  25. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/eventlet.py +0 -0
  26. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/gevent.py +0 -0
  27. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/gevent_uwsgi.py +0 -0
  28. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/sanic.py +0 -0
  29. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/threading.py +0 -0
  30. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_drivers/tornado.py +0 -0
  31. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_server.py +0 -0
  32. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/async_socket.py +0 -0
  33. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/base_client.py +0 -0
  34. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/base_socket.py +0 -0
  35. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/client.py +0 -0
  36. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/exceptions.py +0 -0
  37. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/json.py +0 -0
  38. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/middleware.py +0 -0
  39. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/payload.py +0 -0
  40. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/server.py +0 -0
  41. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/socket.py +0 -0
  42. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/engineio/static_files.py +0 -0
  43. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/python_engineio.egg-info/SOURCES.txt +0 -0
  44. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/python_engineio.egg-info/dependency_links.txt +0 -0
  45. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/python_engineio.egg-info/not-zip-safe +0 -0
  46. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/python_engineio.egg-info/requires.txt +0 -0
  47. {python_engineio-4.11.2 → python_engineio-4.12.1}/src/python_engineio.egg-info/top_level.txt +0 -0
  48. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/__init__.py +0 -0
  49. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/__init__.py +0 -0
  50. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/index.html +0 -0
  51. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_aiohttp.py +0 -0
  52. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_asgi.py +0 -0
  53. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_client.py +0 -0
  54. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_sanic.py +0 -0
  55. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_server.py +0 -0
  56. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_socket.py +0 -0
  57. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/async/test_tornado.py +0 -0
  58. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/__init__.py +0 -0
  59. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/index.html +0 -0
  60. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/test_client.py +0 -0
  61. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/test_middleware.py +0 -0
  62. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/test_packet.py +0 -0
  63. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/test_payload.py +0 -0
  64. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/test_server.py +0 -0
  65. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/common/test_socket.py +0 -0
  66. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/README.md +0 -0
  67. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/binary_b64_packet.py +0 -0
  68. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/binary_packet.py +0 -0
  69. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/json_packet.py +0 -0
  70. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/payload.py +0 -0
  71. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/run.sh +0 -0
  72. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/server_receive.py +0 -0
  73. {python_engineio-4.11.2 → python_engineio-4.12.1}/tests/performance/text_packet.py +0 -0
  74. {python_engineio-4.11.2 → python_engineio-4.12.1}/tox.ini +0 -0
@@ -1,14 +1,14 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.11.2
3
+ Version: 4.12.1
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
+ License: MIT
6
7
  Project-URL: Homepage, https://github.com/miguelgrinberg/python-engineio
7
8
  Project-URL: Bug Tracker, https://github.com/miguelgrinberg/python-engineio/issues
8
9
  Classifier: Environment :: Web Environment
9
10
  Classifier: Intended Audience :: Developers
10
11
  Classifier: Programming Language :: Python :: 3
11
- Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Requires-Python: >=3.6
14
14
  Description-Content-Type: text/markdown
@@ -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,13 +1,13 @@
1
1
  [project]
2
2
  name = "python-engineio"
3
- version = "4.11.2"
3
+ version = "4.12.1"
4
+ license = {text = "MIT"}
4
5
  authors = [{name = "Miguel Grinberg", email = "miguel.grinberg@gmail.com"}]
5
6
  description = "Engine.IO server and client for Python"
6
7
  classifiers = [
7
8
  "Environment :: Web Environment",
8
9
  "Intended Audience :: Developers",
9
10
  "Programming Language :: Python :: 3",
10
- "License :: OSI Approved :: MIT License",
11
11
  "Operating System :: OS Independent",
12
12
  ]
13
13
  requires-python = ">=3.6"
@@ -280,7 +280,12 @@ class WebSocket: # pragma: no cover
280
280
  event = await self.asgi_receive()
281
281
  if event['type'] != 'websocket.receive':
282
282
  raise OSError()
283
- return event.get('bytes') or event.get('text')
283
+ if 'bytes' in event:
284
+ return event['bytes']
285
+ elif 'text' in event:
286
+ return event['text']
287
+ else: # pragma: no cover
288
+ raise OSError()
284
289
 
285
290
 
286
291
  _async = {
@@ -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:]
@@ -1,14 +1,14 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.11.2
3
+ Version: 4.12.1
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
+ License: MIT
6
7
  Project-URL: Homepage, https://github.com/miguelgrinberg/python-engineio
7
8
  Project-URL: Bug Tracker, https://github.com/miguelgrinberg/python-engineio/issues
8
9
  Classifier: Environment :: Web Environment
9
10
  Classifier: Intended Audience :: Developers
10
11
  Classifier: Programming Language :: Python :: 3
11
- Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Requires-Python: >=3.6
14
14
  Description-Content-Type: text/markdown
@@ -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
  ===============