Add support for Python 3.12 to Uvloop #547

Description

@gotmax23
  • uvloop version: uvloop-0.17.0
  • Python version: 3.12.0b3
  • Platform: Fedora Linux Rawhide
  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
  • Does uvloop behave differently from vanilla asyncio? How?: N/A

Uvloop's test suite currently fails on Python 3.12:

======================================================================
ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
return await fut
^^^^^^^^^
File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
await site.stop()
File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
await self._server.wait_closed()
File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
await waiter
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
self.loop.run_until_complete(stop())
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
await asyncio.wait_for(runner.cleanup(), timeout=0.1)
File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
async with timeouts.timeout(timeout):
File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
raise TimeoutError from exc_val
TimeoutError
======================================================================
ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
import pyximport
File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
from .pyximport import *
File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
import imp
ModuleNotFoundError: No module named 'imp'
======================================================================
ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
subprocess.run([sys.executable, '-c', script], check=True)
File "/usr/lib64/python3.12/subprocess.py", line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
======================================================================
FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
self.loop.run_until_complete(start_server())
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
self.assertEqual(srv_sock.fileno(), -1)
AssertionError: 29 != -1
======================================================================
FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
check ephemeral port can be used
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
self.loop.run_until_complete(start_server_ephemeral_ports())
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
self.assertEqual(srv_sock.fileno(), -1)
AssertionError: 29 != -1
======================================================================
FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
self.loop.run_until_complete(start_server())
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
self.assertEqual(srv_sock.fileno(), -1)
AssertionError: 29 != -1
======================================================================
FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
self.loop.run_until_complete(start_server_sock(
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
self.assertEqual(srv_sock.fileno(), -1)
AssertionError: 29 != -1
======================================================================
FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
self.loop.run_until_complete(start_server_sock(
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
self.assertEqual(srv_sock.fileno(), -1)
AssertionError: 29 != -1
----------------------------------------------------------------------
Ran 506 tests in 121.799s
FAILED (failures=5, errors=3, skipped=33)
Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>

Please add Python 3.12 support.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
      Skip to content

      Add support for Python 3.12 to Uvloop #547

      Description

      @gotmax23
      • uvloop version: uvloop-0.17.0
      • Python version: 3.12.0b3
      • Platform: Fedora Linux Rawhide
      • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
      • Does uvloop behave differently from vanilla asyncio? How?: N/A

      Uvloop's test suite currently fails on Python 3.12:

      ======================================================================
      ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
      return await fut
      ^^^^^^^^^
      File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
      await site.stop()
      File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
      await self._server.wait_closed()
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
      await waiter
      asyncio.exceptions.CancelledError
      The above exception was the direct cause of the following exception:
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
      self.loop.run_until_complete(stop())
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
      return future.result()
      ^^^^^^^^^^^^^^^
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
      await asyncio.wait_for(runner.cleanup(), timeout=0.1)
      File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
      async with timeouts.timeout(timeout):
      File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
      raise TimeoutError from exc_val
      TimeoutError
      ======================================================================
      ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
      import pyximport
      File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
      from .pyximport import *
      File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
      import imp
      ModuleNotFoundError: No module named 'imp'
      ======================================================================
      ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
      subprocess.run([sys.executable, '-c', script], check=True)
      File "/usr/lib64/python3.12/subprocess.py", line 571, in run
      raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
      ======================================================================
      FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
      self.loop.run_until_complete(start_server())
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
      return future.result()
      ^^^^^^^^^^^^^^^
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
      self.assertEqual(srv_sock.fileno(), -1)
      AssertionError: 29 != -1
      ======================================================================
      FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
      check ephemeral port can be used
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
      self.loop.run_until_complete(start_server_ephemeral_ports())
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
      return future.result()
      ^^^^^^^^^^^^^^^
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
      self.assertEqual(srv_sock.fileno(), -1)
      AssertionError: 29 != -1
      ======================================================================
      FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
      self.loop.run_until_complete(start_server())
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
      return future.result()
      ^^^^^^^^^^^^^^^
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
      self.assertEqual(srv_sock.fileno(), -1)
      AssertionError: 29 != -1
      ======================================================================
      FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
      self.loop.run_until_complete(start_server_sock(
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
      return future.result()
      ^^^^^^^^^^^^^^^
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
      self.assertEqual(srv_sock.fileno(), -1)
      AssertionError: 29 != -1
      ======================================================================
      FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
      self.loop.run_until_complete(start_server_sock(
      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
      return future.result()
      ^^^^^^^^^^^^^^^
      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
      self.assertEqual(srv_sock.fileno(), -1)
      AssertionError: 29 != -1
      ----------------------------------------------------------------------
      Ran 506 tests in 121.799s
      FAILED (failures=5, errors=3, skipped=33)
      Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
      error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
      

      Please add Python 3.12 support.

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Add support for Python 3.12 to Uvloop #547

          Description

          @gotmax23
          • uvloop version: uvloop-0.17.0
          • Python version: 3.12.0b3
          • Platform: Fedora Linux Rawhide
          • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
          • Does uvloop behave differently from vanilla asyncio? How?: N/A

          Uvloop's test suite currently fails on Python 3.12:

          ======================================================================
          ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
          return await fut
          ^^^^^^^^^
          File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
          await site.stop()
          File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
          await self._server.wait_closed()
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
          await waiter
          asyncio.exceptions.CancelledError
          The above exception was the direct cause of the following exception:
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
          self.loop.run_until_complete(stop())
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
          return future.result()
          ^^^^^^^^^^^^^^^
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
          await asyncio.wait_for(runner.cleanup(), timeout=0.1)
          File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
          async with timeouts.timeout(timeout):
          File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
          raise TimeoutError from exc_val
          TimeoutError
          ======================================================================
          ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
          import pyximport
          File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
          from .pyximport import *
          File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
          import imp
          ModuleNotFoundError: No module named 'imp'
          ======================================================================
          ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
          subprocess.run([sys.executable, '-c', script], check=True)
          File "/usr/lib64/python3.12/subprocess.py", line 571, in run
          raise CalledProcessError(retcode, process.args,
          subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
          ======================================================================
          FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
          self.loop.run_until_complete(start_server())
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
          return future.result()
          ^^^^^^^^^^^^^^^
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
          self.assertEqual(srv_sock.fileno(), -1)
          AssertionError: 29 != -1
          ======================================================================
          FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
          check ephemeral port can be used
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
          self.loop.run_until_complete(start_server_ephemeral_ports())
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
          return future.result()
          ^^^^^^^^^^^^^^^
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
          self.assertEqual(srv_sock.fileno(), -1)
          AssertionError: 29 != -1
          ======================================================================
          FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
          self.loop.run_until_complete(start_server())
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
          return future.result()
          ^^^^^^^^^^^^^^^
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
          self.assertEqual(srv_sock.fileno(), -1)
          AssertionError: 29 != -1
          ======================================================================
          FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
          self.loop.run_until_complete(start_server_sock(
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
          return future.result()
          ^^^^^^^^^^^^^^^
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
          self.assertEqual(srv_sock.fileno(), -1)
          AssertionError: 29 != -1
          ======================================================================
          FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
          ----------------------------------------------------------------------
          Traceback (most recent call last):
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
          self.loop.run_until_complete(start_server_sock(
          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
          return future.result()
          ^^^^^^^^^^^^^^^
          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
          self.assertEqual(srv_sock.fileno(), -1)
          AssertionError: 29 != -1
          ----------------------------------------------------------------------
          Ran 506 tests in 121.799s
          FAILED (failures=5, errors=3, skipped=33)
          Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
          error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
          

          Please add Python 3.12 support.

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Add support for Python 3.12 to Uvloop #547

              Description

              @gotmax23
              • uvloop version: uvloop-0.17.0
              • Python version: 3.12.0b3
              • Platform: Fedora Linux Rawhide
              • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
              • Does uvloop behave differently from vanilla asyncio? How?: N/A

              Uvloop's test suite currently fails on Python 3.12:

              ======================================================================
              ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
              return await fut
              ^^^^^^^^^
              File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
              await site.stop()
              File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
              await self._server.wait_closed()
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
              await waiter
              asyncio.exceptions.CancelledError
              The above exception was the direct cause of the following exception:
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
              self.loop.run_until_complete(stop())
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
              return future.result()
              ^^^^^^^^^^^^^^^
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
              await asyncio.wait_for(runner.cleanup(), timeout=0.1)
              File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
              async with timeouts.timeout(timeout):
              File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
              raise TimeoutError from exc_val
              TimeoutError
              ======================================================================
              ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
              import pyximport
              File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
              from .pyximport import *
              File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
              import imp
              ModuleNotFoundError: No module named 'imp'
              ======================================================================
              ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
              subprocess.run([sys.executable, '-c', script], check=True)
              File "/usr/lib64/python3.12/subprocess.py", line 571, in run
              raise CalledProcessError(retcode, process.args,
              subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
              ======================================================================
              FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
              self.loop.run_until_complete(start_server())
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
              return future.result()
              ^^^^^^^^^^^^^^^
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
              self.assertEqual(srv_sock.fileno(), -1)
              AssertionError: 29 != -1
              ======================================================================
              FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
              check ephemeral port can be used
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
              self.loop.run_until_complete(start_server_ephemeral_ports())
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
              return future.result()
              ^^^^^^^^^^^^^^^
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
              self.assertEqual(srv_sock.fileno(), -1)
              AssertionError: 29 != -1
              ======================================================================
              FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
              self.loop.run_until_complete(start_server())
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
              return future.result()
              ^^^^^^^^^^^^^^^
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
              self.assertEqual(srv_sock.fileno(), -1)
              AssertionError: 29 != -1
              ======================================================================
              FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
              self.loop.run_until_complete(start_server_sock(
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
              return future.result()
              ^^^^^^^^^^^^^^^
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
              self.assertEqual(srv_sock.fileno(), -1)
              AssertionError: 29 != -1
              ======================================================================
              FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
              ----------------------------------------------------------------------
              Traceback (most recent call last):
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
              self.loop.run_until_complete(start_server_sock(
              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
              return future.result()
              ^^^^^^^^^^^^^^^
              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
              self.assertEqual(srv_sock.fileno(), -1)
              AssertionError: 29 != -1
              ----------------------------------------------------------------------
              Ran 506 tests in 121.799s
              FAILED (failures=5, errors=3, skipped=33)
              Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
              error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
              

              Please add Python 3.12 support.

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Add support for Python 3.12 to Uvloop #547

                  Description

                  @gotmax23
                  • uvloop version: uvloop-0.17.0
                  • Python version: 3.12.0b3
                  • Platform: Fedora Linux Rawhide
                  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
                  • Does uvloop behave differently from vanilla asyncio? How?: N/A

                  Uvloop's test suite currently fails on Python 3.12:

                  ======================================================================
                  ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
                  return await fut
                  ^^^^^^^^^
                  File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
                  await site.stop()
                  File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
                  await self._server.wait_closed()
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
                  await waiter
                  asyncio.exceptions.CancelledError
                  The above exception was the direct cause of the following exception:
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
                  self.loop.run_until_complete(stop())
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                  return future.result()
                  ^^^^^^^^^^^^^^^
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
                  await asyncio.wait_for(runner.cleanup(), timeout=0.1)
                  File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
                  async with timeouts.timeout(timeout):
                  File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
                  raise TimeoutError from exc_val
                  TimeoutError
                  ======================================================================
                  ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
                  import pyximport
                  File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
                  from .pyximport import *
                  File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
                  import imp
                  ModuleNotFoundError: No module named 'imp'
                  ======================================================================
                  ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
                  subprocess.run([sys.executable, '-c', script], check=True)
                  File "/usr/lib64/python3.12/subprocess.py", line 571, in run
                  raise CalledProcessError(retcode, process.args,
                  subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
                  ======================================================================
                  FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
                  self.loop.run_until_complete(start_server())
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                  return future.result()
                  ^^^^^^^^^^^^^^^
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
                  self.assertEqual(srv_sock.fileno(), -1)
                  AssertionError: 29 != -1
                  ======================================================================
                  FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
                  check ephemeral port can be used
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
                  self.loop.run_until_complete(start_server_ephemeral_ports())
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                  return future.result()
                  ^^^^^^^^^^^^^^^
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
                  self.assertEqual(srv_sock.fileno(), -1)
                  AssertionError: 29 != -1
                  ======================================================================
                  FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
                  self.loop.run_until_complete(start_server())
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                  return future.result()
                  ^^^^^^^^^^^^^^^
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
                  self.assertEqual(srv_sock.fileno(), -1)
                  AssertionError: 29 != -1
                  ======================================================================
                  FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
                  self.loop.run_until_complete(start_server_sock(
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                  return future.result()
                  ^^^^^^^^^^^^^^^
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                  self.assertEqual(srv_sock.fileno(), -1)
                  AssertionError: 29 != -1
                  ======================================================================
                  FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
                  ----------------------------------------------------------------------
                  Traceback (most recent call last):
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
                  self.loop.run_until_complete(start_server_sock(
                  File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                  return future.result()
                  ^^^^^^^^^^^^^^^
                  File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                  self.assertEqual(srv_sock.fileno(), -1)
                  AssertionError: 29 != -1
                  ----------------------------------------------------------------------
                  Ran 506 tests in 121.799s
                  FAILED (failures=5, errors=3, skipped=33)
                  Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                  error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                  

                  Please add Python 3.12 support.

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Add support for Python 3.12 to Uvloop #547

                      Description

                      @gotmax23
                      • uvloop version: uvloop-0.17.0
                      • Python version: 3.12.0b3
                      • Platform: Fedora Linux Rawhide
                      • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
                      • Does uvloop behave differently from vanilla asyncio? How?: N/A

                      Uvloop's test suite currently fails on Python 3.12:

                      ======================================================================
                      ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
                      return await fut
                      ^^^^^^^^^
                      File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
                      await site.stop()
                      File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
                      await self._server.wait_closed()
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
                      await waiter
                      asyncio.exceptions.CancelledError
                      The above exception was the direct cause of the following exception:
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
                      self.loop.run_until_complete(stop())
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                      return future.result()
                      ^^^^^^^^^^^^^^^
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
                      await asyncio.wait_for(runner.cleanup(), timeout=0.1)
                      File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
                      async with timeouts.timeout(timeout):
                      File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
                      raise TimeoutError from exc_val
                      TimeoutError
                      ======================================================================
                      ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
                      import pyximport
                      File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
                      from .pyximport import *
                      File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
                      import imp
                      ModuleNotFoundError: No module named 'imp'
                      ======================================================================
                      ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
                      subprocess.run([sys.executable, '-c', script], check=True)
                      File "/usr/lib64/python3.12/subprocess.py", line 571, in run
                      raise CalledProcessError(retcode, process.args,
                      subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
                      ======================================================================
                      FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
                      self.loop.run_until_complete(start_server())
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                      return future.result()
                      ^^^^^^^^^^^^^^^
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
                      self.assertEqual(srv_sock.fileno(), -1)
                      AssertionError: 29 != -1
                      ======================================================================
                      FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
                      check ephemeral port can be used
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
                      self.loop.run_until_complete(start_server_ephemeral_ports())
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                      return future.result()
                      ^^^^^^^^^^^^^^^
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
                      self.assertEqual(srv_sock.fileno(), -1)
                      AssertionError: 29 != -1
                      ======================================================================
                      FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
                      self.loop.run_until_complete(start_server())
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                      return future.result()
                      ^^^^^^^^^^^^^^^
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
                      self.assertEqual(srv_sock.fileno(), -1)
                      AssertionError: 29 != -1
                      ======================================================================
                      FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
                      self.loop.run_until_complete(start_server_sock(
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                      return future.result()
                      ^^^^^^^^^^^^^^^
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                      self.assertEqual(srv_sock.fileno(), -1)
                      AssertionError: 29 != -1
                      ======================================================================
                      FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
                      ----------------------------------------------------------------------
                      Traceback (most recent call last):
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
                      self.loop.run_until_complete(start_server_sock(
                      File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                      return future.result()
                      ^^^^^^^^^^^^^^^
                      File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                      self.assertEqual(srv_sock.fileno(), -1)
                      AssertionError: 29 != -1
                      ----------------------------------------------------------------------
                      Ran 506 tests in 121.799s
                      FAILED (failures=5, errors=3, skipped=33)
                      Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                      error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                      

                      Please add Python 3.12 support.

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Add support for Python 3.12 to Uvloop #547

                          Description

                          @gotmax23
                          • uvloop version: uvloop-0.17.0
                          • Python version: 3.12.0b3
                          • Platform: Fedora Linux Rawhide
                          • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
                          • Does uvloop behave differently from vanilla asyncio? How?: N/A

                          Uvloop's test suite currently fails on Python 3.12:

                          ======================================================================
                          ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
                          return await fut
                          ^^^^^^^^^
                          File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
                          await site.stop()
                          File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
                          await self._server.wait_closed()
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
                          await waiter
                          asyncio.exceptions.CancelledError
                          The above exception was the direct cause of the following exception:
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
                          self.loop.run_until_complete(stop())
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                          return future.result()
                          ^^^^^^^^^^^^^^^
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
                          await asyncio.wait_for(runner.cleanup(), timeout=0.1)
                          File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
                          async with timeouts.timeout(timeout):
                          File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
                          raise TimeoutError from exc_val
                          TimeoutError
                          ======================================================================
                          ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
                          import pyximport
                          File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
                          from .pyximport import *
                          File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
                          import imp
                          ModuleNotFoundError: No module named 'imp'
                          ======================================================================
                          ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
                          subprocess.run([sys.executable, '-c', script], check=True)
                          File "/usr/lib64/python3.12/subprocess.py", line 571, in run
                          raise CalledProcessError(retcode, process.args,
                          subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
                          ======================================================================
                          FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
                          self.loop.run_until_complete(start_server())
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                          return future.result()
                          ^^^^^^^^^^^^^^^
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
                          self.assertEqual(srv_sock.fileno(), -1)
                          AssertionError: 29 != -1
                          ======================================================================
                          FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
                          check ephemeral port can be used
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
                          self.loop.run_until_complete(start_server_ephemeral_ports())
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                          return future.result()
                          ^^^^^^^^^^^^^^^
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
                          self.assertEqual(srv_sock.fileno(), -1)
                          AssertionError: 29 != -1
                          ======================================================================
                          FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
                          self.loop.run_until_complete(start_server())
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                          return future.result()
                          ^^^^^^^^^^^^^^^
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
                          self.assertEqual(srv_sock.fileno(), -1)
                          AssertionError: 29 != -1
                          ======================================================================
                          FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
                          self.loop.run_until_complete(start_server_sock(
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                          return future.result()
                          ^^^^^^^^^^^^^^^
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                          self.assertEqual(srv_sock.fileno(), -1)
                          AssertionError: 29 != -1
                          ======================================================================
                          FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
                          ----------------------------------------------------------------------
                          Traceback (most recent call last):
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
                          self.loop.run_until_complete(start_server_sock(
                          File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                          return future.result()
                          ^^^^^^^^^^^^^^^
                          File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                          self.assertEqual(srv_sock.fileno(), -1)
                          AssertionError: 29 != -1
                          ----------------------------------------------------------------------
                          Ran 506 tests in 121.799s
                          FAILED (failures=5, errors=3, skipped=33)
                          Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                          error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                          

                          Please add Python 3.12 support.

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Add support for Python 3.12 to Uvloop #547

                              Description

                              @gotmax23
                              • uvloop version: uvloop-0.17.0
                              • Python version: 3.12.0b3
                              • Platform: Fedora Linux Rawhide
                              • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: N/A
                              • Does uvloop behave differently from vanilla asyncio? How?: N/A

                              Uvloop's test suite currently fails on Python 3.12:

                              ======================================================================
                              ERROR: test_aiohttp_graceful_shutdown (tests.test_aiohttp.Test_AIO_AioHTTP.test_aiohttp_graceful_shutdown)
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/usr/lib64/python3.12/asyncio/tasks.py", line 510, in wait_for
                              return await fut
                              ^^^^^^^^^
                              File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 293, in cleanup
                              await site.stop()
                              File "/usr/lib64/python3.12/site-packages/aiohttp/web_runner.py", line 75, in stop
                              await self._server.wait_closed()
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 384, in wait_closed
                              await waiter
                              asyncio.exceptions.CancelledError
                              The above exception was the direct cause of the following exception:
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 101, in test_aiohttp_graceful_shutdown
                              self.loop.run_until_complete(stop())
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                              return future.result()
                              ^^^^^^^^^^^^^^^
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_aiohttp.py", line 93, in stop
                              await asyncio.wait_for(runner.cleanup(), timeout=0.1)
                              File "/usr/lib64/python3.12/asyncio/tasks.py", line 509, in wait_for
                              async with timeouts.timeout(timeout):
                              File "/usr/lib64/python3.12/asyncio/timeouts.py", line 111, in __aexit__
                              raise TimeoutError from exc_val
                              TimeoutError
                              ======================================================================
                              ERROR: test_libuv_get_loop_t_ptr (tests.test_libuv_api.Test_UV_libuv.test_libuv_get_loop_t_ptr)
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_libuv_api.py", line 12, in test_libuv_get_loop_t_ptr
                              import pyximport
                              File "/usr/lib64/python3.12/site-packages/pyximport/__init__.py", line 1, in <module>
                              from .pyximport import *
                              File "/usr/lib64/python3.12/site-packages/pyximport/pyximport.py", line 51, in <module>
                              import imp
                              ModuleNotFoundError: No module named 'imp'
                              ======================================================================
                              ERROR: test_process_double_close (tests.test_process.Test_UV_Process.test_process_double_close)
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_process.py", line 867, in test_process_double_close
                              subprocess.run([sys.executable, '-c', script], check=True)
                              File "/usr/lib64/python3.12/subprocess.py", line 571, in run
                              raise CalledProcessError(retcode, process.args,
                              subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', '\nimport os\nimport sys\nfrom unittest import mock\n\nimport asyncio\n\npipes = []\noriginal_os_pipe = os.pipe\ndef log_pipes():\n pipe = original_os_pipe()\n pipes.append(pipe)\n return pipe\n\ndups = []\noriginal_os_dup = os.dup\ndef log_dups(*args, **kwargs):\n dup = original_os_dup(*args, **kwargs)\n dups.append(dup)\n return dup\n\nwith mock.patch(\n "os.close", wraps=os.close\n) as os_close, mock.patch(\n "os.pipe", new=log_pipes\n), mock.patch(\n "os.dup", new=log_dups\n):\n import uvloop\n\n\nasync def test():\n proc = await asyncio.create_subprocess_exec(\n sys.executable, "-c", "pass"\n )\n await proc.communicate()\n\nuvloop.install()\nasyncio.run(test())\n\nstdin, stdout, stderr = dups\n(r, w), = pipes\nassert os_close.mock_calls == [\n mock.call(w),\n mock.call(r),\n mock.call(stderr),\n mock.call(stdout),\n mock.call(stdin),\n]\n']' returned non-zero exit status 1.
                              ======================================================================
                              FAIL: test_create_server_1 (tests.test_tcp.Test_AIO_TCP.test_create_server_1)
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 177, in test_create_server_1
                              self.loop.run_until_complete(start_server())
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                              return future.result()
                              ^^^^^^^^^^^^^^^
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 138, in start_server
                              self.assertEqual(srv_sock.fileno(), -1)
                              AssertionError: 29 != -1
                              ======================================================================
                              FAIL: test_create_server_3 (tests.test_tcp.Test_AIO_TCP.test_create_server_3)
                              check ephemeral port can be used
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 214, in test_create_server_3
                              self.loop.run_until_complete(start_server_ephemeral_ports())
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                              return future.result()
                              ^^^^^^^^^^^^^^^
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_tcp.py", line 210, in start_server_ephemeral_ports
                              self.assertEqual(srv_sock.fileno(), -1)
                              AssertionError: 29 != -1
                              ======================================================================
                              FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(host, port)')
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 129, in test_create_unix_server_1
                              self.loop.run_until_complete(start_server())
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                              return future.result()
                              ^^^^^^^^^^^^^^^
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 86, in start_server
                              self.assertEqual(srv_sock.fileno(), -1)
                              AssertionError: 29 != -1
                              ======================================================================
                              FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_unix_server(sock)')
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 133, in test_create_unix_server_1
                              self.loop.run_until_complete(start_server_sock(
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                              return future.result()
                              ^^^^^^^^^^^^^^^
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                              self.assertEqual(srv_sock.fileno(), -1)
                              AssertionError: 29 != -1
                              ======================================================================
                              FAIL: test_create_unix_server_1 (tests.test_unix.Test_AIO_Unix.test_create_unix_server_1) (func='start_server(sock)')
                              ----------------------------------------------------------------------
                              Traceback (most recent call last):
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 141, in test_create_unix_server_1
                              self.loop.run_until_complete(start_server_sock(
                              File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
                              return future.result()
                              ^^^^^^^^^^^^^^^
                              File "/builddir/build/BUILD/uvloop-0.17.0/tests/test_unix.py", line 121, in start_server_sock
                              self.assertEqual(srv_sock.fileno(), -1)
                              AssertionError: 29 != -1
                              ----------------------------------------------------------------------
                              Ran 506 tests in 121.799s
                              FAILED (failures=5, errors=3, skipped=33)
                              Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                              error: Test failed: <unittest.runner.TextTestResult run=506 errors=3 failures=5>
                              

                              Please add Python 3.12 support.

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions