Эх сурвалжийг харах

[eventlet] Add rudimentary support for Python 3.10 (#3717)

Ayush Goyal 1 жил өмнө
parent
commit
aa46998e7b

+ 4 - 1
desktop/core/ext-py3/eventlet-0.30.2/eventlet/greenio/base.py

@@ -29,7 +29,10 @@ if six.PY2:
 _original_socket = eventlet.patcher.original('socket').socket
 
 
-socket_timeout = eventlet.timeout.wrap_is_timeout(socket.timeout)
+if sys.version_info >= (3, 10):
+    socket_timeout = socket.timeout  # Really, TimeoutError
+else:
+    socket_timeout = eventlet.timeout.wrap_is_timeout(socket.timeout)
 
 
 def socket_connect(descriptor, address):

+ 4 - 1
desktop/core/ext-py3/eventlet-0.30.2/eventlet/greenio/py3.py

@@ -191,9 +191,12 @@ _open_environment.update(dict(
     FileIO=GreenFileIO,
     os=_original_os,
 ))
+if hasattr(_original_pyio, 'text_encoding'):
+    _open_environment['text_encoding'] = _original_pyio.text_encoding
 
+_pyio_open = getattr(_original_pyio.open, '__wrapped__', _original_pyio.open)
 _open = FunctionType(
-    six.get_function_code(_original_pyio.open),
+    six.get_function_code(_pyio_open),
     _open_environment,
 )
 

+ 7 - 2
desktop/core/ext-py3/eventlet-0.30.2/eventlet/timeout.py

@@ -174,6 +174,11 @@ def wrap_is_timeout(base):
     return fun
 
 
+if isinstance(__builtins__, dict):  # seen when running tests on py310, but HOW??
+    _timeout_err = __builtins__.get('TimeoutError', Timeout)
+else:
+    _timeout_err = getattr(__builtins__, 'TimeoutError', Timeout)
+
+
 def is_timeout(obj):
-    py3err = getattr(__builtins__, 'TimeoutError', Timeout)
-    return bool(getattr(obj, 'is_timeout', False)) or isinstance(obj, py3err)
+    return bool(getattr(obj, 'is_timeout', False)) or isinstance(obj, _timeout_err)

+ 1 - 1
desktop/core/ext-py3/eventlet-0.30.2/tests/__init__.py

@@ -383,7 +383,7 @@ def run_isolated(path, prefix='tests/isolated/', **kwargs):
 
 def check_is_timeout(obj):
     value_text = getattr(obj, 'is_timeout', '(missing)')
-    assert obj.is_timeout, 'type={0} str={1} .is_timeout={2}'.format(type(obj), str(obj), value_text)
+    assert eventlet.is_timeout(obj), 'type={0} str={1} .is_timeout={2}'.format(type(obj), str(obj), value_text)
 
 
 @contextlib.contextmanager

+ 4 - 1
desktop/core/ext-py3/eventlet-0.30.2/tests/backdoor_test.py

@@ -1,5 +1,6 @@
 import os
 import os.path
+import sys
 
 import eventlet
 
@@ -22,7 +23,9 @@ class BackdoorTest(tests.LimitedTestCase):
     def _run_test_on_client_and_server(self, client, server_thread):
         f = client.makefile('rw')
         assert 'Python' in f.readline()
-        f.readline()  # build info
+        if sys.version_info < (3, 10):
+            # Starting in py310, build info is included in version line
+            f.readline()  # build info
         f.readline()  # help info
         assert 'InteractiveConsole' in f.readline()
         self.assertEqual('>>> ', f.read(4))