Skip to content

Fix epoll test cleanup on Python 3.15 - #758

Draft
honglei wants to merge 1 commit into
MagicStack:masterfrom
honglei:fix-python315-epoll-test
Draft

Fix epoll test cleanup on Python 3.15#758
honglei wants to merge 1 commit into
MagicStack:masterfrom
honglei:fix-python315-epoll-test

Conversation

@honglei

@honglei honglei commented Aug 24, 2026

Copy link
Copy Markdown

Summary

Keep the test-owned epoll wrapper on a duplicate of uvloop's backend descriptor. The loop retains ownership of its descriptor and closes it itself.

This preserves the existing assertion that remove_reader() removes the socket from the same epoll instance, while avoiding a second close after loop.close() on Python 3.15.

Validation

On Ubuntu 24.04 with locally built uvloop master:

  • Python 3.14.7 free-threaded: TestUVSockets.test_socket_sync_remove passes
  • Python 3.15.0rc1: test passes
  • Python 3.15.0rc1 free-threaded: test passes

Why draft

Current source builds and basic loop smoke tests on 3.15/3.15t, but this is only a test-cleanup prerequisite, not a claim of complete 3.15 support. The full 3.15t optional test dependencies are currently blocked upstream: pyOpenSSL~=25.3.0 resolves to cryptography 46.0.7, whose PyO3 build rejects Python 3.15 free-threaded. I will not add 3.15/3.15t CI or release-wheel targets until that complete suite can run green.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant