Hi,
The issue is that eventlet didn't implement:
GreenSocket.sendmsg.
Likely, recvmsg as well.
What's happening is this import stack:
eventlet → greendns → dnspython → httpcore → trio
Adding EVENTLET_NO_GREENDNS=yes as an env var avoids this.
So what's happening is Eventlet leaking a monkey-patched socket into a
dependency graph that now performs import-time API introspection.
From my perspective, the only thing I could do would be adding a
Breaks: python3-trio in Eventlet, and call it a day. Especially because:
# python3 -c 'import eventlet'
<string>:1: EventletDeprecationWarning:
Eventlet is deprecated. It is currently being maintained in bugfix mode, and
we strongly recommend against using it for new projects.
If you are already using Eventlet, we recommend migrating to a different
framework. For more detail see
https://eventlet.readthedocs.io/en/latest/asyncio/migration.html
FYI, the only reason Eventlet is still in Debian, is because OpenStack
hasn't finished migrating away from it.
I'll add the Breaks: and close this bug. Anyone willing to fix this bug
better must implement sendmsg / recvmsg in GreenSocket, but I'm not even
sure some new functionality will be accepted in upstream Eventlet, which
is a dying project.
Cheers,
Thomas Goirand (zigo)