python-engineio 4.13.4__tar.gz → 4.13.5__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 (65) hide show
  1. {python_engineio-4.13.4/src/python_engineio.egg-info → python_engineio-4.13.5}/PKG-INFO +1 -11
  2. {python_engineio-4.13.4 → python_engineio-4.13.5}/README.md +0 -10
  3. {python_engineio-4.13.4 → python_engineio-4.13.5}/pyproject.toml +1 -1
  4. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/asgi.py +2 -1
  5. {python_engineio-4.13.4 → python_engineio-4.13.5/src/python_engineio.egg-info}/PKG-INFO +1 -11
  6. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_asgi.py +21 -0
  7. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_socket.py +19 -0
  8. {python_engineio-4.13.4 → python_engineio-4.13.5}/LICENSE +0 -0
  9. {python_engineio-4.13.4 → python_engineio-4.13.5}/MANIFEST.in +0 -0
  10. {python_engineio-4.13.4 → python_engineio-4.13.5}/docs/_static/README.md +0 -0
  11. {python_engineio-4.13.4 → python_engineio-4.13.5}/setup.cfg +0 -0
  12. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/__init__.py +0 -0
  13. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_client.py +0 -0
  14. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/__init__.py +0 -0
  15. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/_websocket_wsgi.py +0 -0
  16. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/aiohttp.py +0 -0
  17. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/eventlet.py +0 -0
  18. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/gevent.py +0 -0
  19. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/gevent_uwsgi.py +0 -0
  20. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/sanic.py +0 -0
  21. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/threading.py +0 -0
  22. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_drivers/tornado.py +0 -0
  23. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_server.py +0 -0
  24. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/async_socket.py +0 -0
  25. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/base_client.py +0 -0
  26. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/base_server.py +0 -0
  27. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/base_socket.py +0 -0
  28. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/client.py +0 -0
  29. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/exceptions.py +0 -0
  30. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/json.py +0 -0
  31. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/middleware.py +0 -0
  32. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/packet.py +0 -0
  33. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/payload.py +0 -0
  34. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/server.py +0 -0
  35. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/socket.py +0 -0
  36. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/engineio/static_files.py +0 -0
  37. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/python_engineio.egg-info/SOURCES.txt +0 -0
  38. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/python_engineio.egg-info/dependency_links.txt +0 -0
  39. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/python_engineio.egg-info/not-zip-safe +0 -0
  40. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/python_engineio.egg-info/requires.txt +0 -0
  41. {python_engineio-4.13.4 → python_engineio-4.13.5}/src/python_engineio.egg-info/top_level.txt +0 -0
  42. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/__init__.py +0 -0
  43. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/index.html +0 -0
  44. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_aiohttp.py +0 -0
  45. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_client.py +0 -0
  46. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_sanic.py +0 -0
  47. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_server.py +0 -0
  48. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/async/test_tornado.py +0 -0
  49. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/__init__.py +0 -0
  50. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/index.html +0 -0
  51. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/test_client.py +0 -0
  52. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/test_middleware.py +0 -0
  53. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/test_packet.py +0 -0
  54. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/test_payload.py +0 -0
  55. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/test_server.py +0 -0
  56. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/common/test_socket.py +0 -0
  57. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/README.md +0 -0
  58. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/binary_b64_packet.py +0 -0
  59. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/binary_packet.py +0 -0
  60. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/json_packet.py +0 -0
  61. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/payload.py +0 -0
  62. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/run.sh +0 -0
  63. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/server_receive.py +0 -0
  64. {python_engineio-4.13.4 → python_engineio-4.13.5}/tests/performance/text_packet.py +0 -0
  65. {python_engineio-4.13.4 → python_engineio-4.13.5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.13.4
3
+ Version: 4.13.5
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  License: MIT
@@ -33,16 +33,6 @@ python-engineio
33
33
 
34
34
  Python implementation of the `Engine.IO` realtime client and server.
35
35
 
36
- Sponsors
37
- --------
38
-
39
- The following organizations are funding this project:
40
-
41
- ![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)<br>[Socket.IO](https://socket.io) | [Add your company here!](https://github.com/sponsors/miguelgrinberg)|
42
- -|-
43
-
44
- Many individual sponsors also support this project through small ongoing contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)?
45
-
46
36
  Resources
47
37
  ---------
48
38
 
@@ -5,16 +5,6 @@ python-engineio
5
5
 
6
6
  Python implementation of the `Engine.IO` realtime client and server.
7
7
 
8
- Sponsors
9
- --------
10
-
11
- The following organizations are funding this project:
12
-
13
- ![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)<br>[Socket.IO](https://socket.io) | [Add your company here!](https://github.com/sponsors/miguelgrinberg)|
14
- -|-
15
-
16
- Many individual sponsors also support this project through small ongoing contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)?
17
-
18
8
  Resources
19
9
  ---------
20
10
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-engineio"
3
- version = "4.13.4"
3
+ version = "4.13.5"
4
4
  license = {text = "MIT"}
5
5
  authors = [{name = "Miguel Grinberg", email = "miguel.grinberg@gmail.com"}]
6
6
  description = "Engine.IO server and client for Python"
@@ -147,7 +147,8 @@ async def translate_request(scope, receive, send):
147
147
  while self.event.get('more_body'):
148
148
  self.event = await receive()
149
149
  if self.event['type'] == 'http.request':
150
- self.payload += self.event.get('body') or b''
150
+ if length is None or len(self.payload) < length:
151
+ self.payload += self.event.get('body') or b''
151
152
  if length is None:
152
153
  r = self.payload
153
154
  self.payload = b''
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-engineio
3
- Version: 4.13.4
3
+ Version: 4.13.5
4
4
  Summary: Engine.IO server and client for Python
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  License: MIT
@@ -33,16 +33,6 @@ python-engineio
33
33
 
34
34
  Python implementation of the `Engine.IO` realtime client and server.
35
35
 
36
- Sponsors
37
- --------
38
-
39
- The following organizations are funding this project:
40
-
41
- ![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)<br>[Socket.IO](https://socket.io) | [Add your company here!](https://github.com/sponsors/miguelgrinberg)|
42
- -|-
43
-
44
- Many individual sponsors also support this project through small ongoing contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)?
45
-
46
36
  Resources
47
37
  ---------
48
38
 
@@ -441,6 +441,27 @@ class TestAsgi:
441
441
  body = await environ['wsgi.input'].read()
442
442
  assert body == b'hello world'
443
443
 
444
+ async def test_translate_request_read_zero(self):
445
+ receive = mock.AsyncMock(
446
+ return_value={'type': 'http.request', 'body': b'hello world'}
447
+ )
448
+ send = mock.AsyncMock()
449
+ environ = await async_asgi.translate_request(
450
+ {
451
+ 'type': 'http',
452
+ 'method': 'PUT',
453
+ 'headers': [
454
+ (b'content-type', b'application/json'),
455
+ (b'content-length', b'123'),
456
+ ],
457
+ 'path': '/foo/bar',
458
+ },
459
+ receive,
460
+ send,
461
+ )
462
+ body = await environ['wsgi.input'].read(0)
463
+ assert body == b''
464
+
444
465
  async def test_translate_websocket_request(self):
445
466
  receive = mock.AsyncMock(return_value={'type': 'websocket.connect'})
446
467
  send = mock.AsyncMock()
@@ -209,6 +209,8 @@ class TestSocket:
209
209
  }
210
210
  await s.handle_post_request(environ)
211
211
  assert s.receive.await_count == 2
212
+ assert s.receive.call_args_list[0][0][0].data == 'hello'
213
+ assert s.receive.call_args_list[1][0][0].data == 'bye'
212
214
 
213
215
  async def test_polling_write_too_large(self):
214
216
  mock_server = self._get_mock_server()
@@ -227,6 +229,23 @@ class TestSocket:
227
229
  with pytest.raises(exceptions.ContentTooLongError):
228
230
  await s.handle_post_request(environ)
229
231
 
232
+ async def test_polling_write_without_content_length(self):
233
+ mock_server = self._get_mock_server()
234
+ pkt1 = packet.Packet(packet.MESSAGE, data='hello')
235
+ pkt2 = packet.Packet(packet.MESSAGE, data='bye')
236
+ p = payload.Payload(packets=[pkt1, pkt2]).encode().encode('utf-8')
237
+ s = async_socket.AsyncSocket(mock_server, 'foo')
238
+ s.receive = mock.AsyncMock()
239
+ environ = {
240
+ 'REQUEST_METHOD': 'POST',
241
+ 'QUERY_STRING': 'sid=foo',
242
+ 'wsgi.input': self._get_read_mock_coro(p),
243
+ }
244
+ await s.handle_post_request(environ)
245
+ assert s.receive.await_count == 2
246
+ assert environ['wsgi.input'].read.call_count == 1
247
+ assert environ['wsgi.input'].read.call_args[0] == (0,)
248
+
230
249
  async def test_upgrade_handshake(self):
231
250
  mock_server = self._get_mock_server()
232
251
  s = async_socket.AsyncSocket(mock_server, 'foo')